---
# Source: opendesk-migrations/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-migrations-pre"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-pre
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
...
---
# Source: opendesk-migrations/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-migrations-pre-environmentdetails"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-pre
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
stringData:
environmentDetails.yaml: |
ai:
apiKey: ""
endpoint: ""
model: ""
annotations:
cassandra:
ingress: null
pod: null
serviceAccount: null
coco:
ingress: null
pod: null
serviceAccount: null
collabora:
ingress: null
pod: null
service: null
serviceAccount: null
cryptpad:
ingress: null
pod: null
serviceAccount: null
element:
common: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixNeoboardWidget:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixNeochoiceWidget:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixNeodatefixBot:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
elementMatrixNeodatefixBotBootstrap:
pod: null
serviceAccount: null
elementMatrixNeodatefixWidget:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixUserVerificationService:
additional: null
pod: null
service: null
serviceAccount: null
elementMatrixUserVerificationServiceBootstrap:
pod: null
serviceAccount: null
elementSynapse:
common: null
federationIngress: null
persistence: null
pod: null
service: null
serviceAccount: null
elementSynapseWeb:
common: null
ingress: null
pod: null
service: null
serviceAccount: null
elementWellKnown:
common: null
ingress: null
pod: null
service: null
serviceAccount: null
jitsi:
pod: null
serviceAccount: null
jitsiGlobal:
pod: null
jitsiJibri:
pod: null
jitsiJicofo:
pod: null
jitsiJigasi:
pod: null
jitsiJitsiPatchJVB:
serviceAccount: null
jitsiJvb:
metricsGrafana: null
metricsPrometheus: null
pod: null
service: null
jitsiProsody:
pod: null
jitsiWeb:
ingress: null
pod: null
nextcloudAio:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
nextcloudExporter:
additional: null
ingress: null
pod: null
serviceAccount: null
nextcloudNextcloudMgmt:
additional: null
pod: null
serviceAccount: null
notes:
ingressAdmin: null
ingressCollaborationAPI: null
ingressCollaborationWS: null
ingressMedia: null
serviceMedia: null
notesBackend:
migrateJob: null
pod: null
service: null
notesFrontend:
pod: null
service: null
notesYProvider:
pod: null
service: null
nubus:
additional: null
ingress: null
nubusGuardian:
authorizationApiPod: null
globalPod: null
ingressAuthorizationApi: null
ingressIngress: null
ingressManagementApi: null
ingressManagementUi: null
managementApiPod: null
managementUiPod: null
serviceAccount: null
nubusIntercomService:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
nubusKeycloak:
common: null
pod: null
service: null
serviceAccount: null
nubusKeycloakBootstrap:
additional: null
pod: null
service: null
serviceAccount: null
nubusKeycloakBootstrapNubus:
additional: null
pod: null
serviceAccount: null
nubusKeycloakExtensions:
handlerAdditional: null
handlerPod: null
handlerService: null
handlerServiceAccount: null
proxyAdditional: null
proxyIngress: null
proxyPod: null
proxyService: null
proxyServiceAccount: null
nubusLdapNotifier:
additional: null
pod: null
service: null
serviceAccount: null
nubusLdapServer:
additional: null
pod: null
service: null
serviceAccount: null
nubusNginxS3Gateway:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
nubusNotificationsApi:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusOxConnector:
pod: null
serviceAccount: null
nubusPortalConsumer:
pod: null
nubusPortalFrontend:
additional: null
ingressIngress: null
ingressRedirects: null
ingressRewrites: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusPortalServer:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusProvisioning:
additional: null
apiAdditional: null
apiPod: null
dispatcherAdditional: null
dispatcherPod: null
natsAdditional: null
natsPod: null
pod: null
prefillAdditional: null
prefillPod: null
registerConsumersAdditional: null
registerConsumersPod: null
service: null
serviceAccount: null
udmTransformerAdditional: null
udmTransformerPod: null
nubusSelfserviceConsumer:
pod: null
serviceAccount: null
nubusStackDataUms:
additional: null
pod: null
serviceAccount: null
nubusUdmListener:
pod: null
serviceAccount: null
nubusUdmRestApi:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusUmcGateway:
ingress: null
pod: null
serviceAccount: null
nubusUmcServer:
additional: null
ingress: null
pod: null
serviceAccount: null
opendeskMigrationsPost:
additional: null
pod: null
serviceAccount: null
opendeskMigrationsPre:
additional: null
pod: null
serviceAccount: null
opendeskServicesHome:
additional: null
ingress: null
opendeskServicesOtterize:
additional: null
opendeskServicesStaticFiles:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
openproject:
ingress: null
openprojectTempVolumes: null
pod: null
seederJob: null
serviceAccount: null
openprojectBootstrap:
additional: null
pod: null
openxchangeAppsuiteCoreDocumentconverter:
pod: null
openxchangeAppsuiteCoreGuidedtours:
pod: null
openxchangeAppsuiteCoreImageconverter:
pod: null
openxchangeAppsuiteCoreMw:
gotenbergPod: null
pod: null
serviceAccount: null
updatePod: null
openxchangeAppsuiteCoreUi:
pod: null
openxchangeAppsuiteCoreUiMiddleware:
pod: null
openxchangeAppsuiteCoreUserGuide:
pod: null
openxchangeAppsuiteIngress:
appsuitebase: null
caldavWellKnownRedirect: null
carddavWellKnownRedirect: null
coreHelpRoute: null
davInfostoreRoute: null
davRootRoute: null
documentsHelpRoute: null
driveClientWindowsOxRoute: null
driveHelpRoute: null
guardApiRoute: null
guardPgpRoute: null
guardSupportApiRoute: null
httpApiRoutesAjax: null
httpApiRoutesApi: null
httpApiRoutesAppRootApi: null
httpApiRoutesAppsuiteApi: null
ingress: null
officeWebRoute: null
restRoutesAdmin: null
restRoutesAdvertisement: null
restRoutesChronos: null
restRoutesPreliminary: null
restRoutesUserfeedback: null
rootredirect: null
rt2Route: null
staticRoutesInfostore: null
staticRoutesRealtime: null
staticRoutesServlet: null
staticRoutesWebservices: null
trailslash: null
wopiServerRoute: null
openxchangeBootstrap:
additional: null
serviceAccount: null
openxchangeDovecot:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
openxchangeEnterpriseContactPicker:
appsuiteCoreMw: null
appsuiteCoreMwPod: null
appsuiteCoreMwServiceAccount: null
openxchangeNextcloudIntegrationUi:
pod: null
openxchangePostfix:
pod: null
service: null
openxchangePublicSectorUi:
pod: null
servicesExternalClamavDistributed:
clamdCommon: null
clamdPod: null
clamdService: null
clamdServiceAccount: null
freshclamCommon: null
freshclamService: null
freshclamServiceAccount: null
milterCommon: null
milterPod: null
milterService: null
milterServiceAccount: null
persistence: null
servicesExternalClamavSimple:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalDkimpy:
additional: null
pod: null
service: null
serviceAccount: null
servicesExternalMariadb:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalMemcached:
common: null
pod: null
service: null
serviceAccount: null
servicesExternalMinio:
apiIngress: null
common: null
ingress: null
persistence: null
pod: null
provisioningPod: null
serviceAccount: null
serviceHeadless: null
serviceService: null
servicesExternalPostfix:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalPostgresql:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalRedis:
common: null
masterMaster: null
masterPersistence: null
masterPod: null
masterService: null
masterServiceAccount: null
replicaPersistence: null
replicaPod: null
replicaReplica: null
replicaService: null
replicaServiceAccount: null
secret: null
xwiki:
common: null
ingress: null
persistence: null
service: null
serviceAccount: null
antivirus:
icap:
host: null
port: 1344
milter:
host: null
port: 7357
apps:
cassandra:
enabled: false
namespace: null
certificates:
enabled: true
namespace: null
clamavDistributed:
enabled: false
namespace: null
clamavSimple:
enabled: true
namespace: null
collabora:
enabled: true
namespace: null
collaboraController:
enabled: false
namespace: null
cryptpad:
enabled: true
namespace: null
dkimpy:
enabled: false
namespace: null
dovecot:
enabled: true
namespace: null
element:
enabled: true
namespace: null
elementAdmin:
enabled: false
namespace: null
elementGroupsync:
enabled: false
namespace: null
home:
enabled: true
namespace: null
jitsi:
enabled: false
namespace: null
mariadb:
enabled: true
namespace: null
memcached:
enabled: true
namespace: null
migrations:
enabled: true
namespace: null
minio:
enabled: true
namespace: null
nextcloud:
enabled: true
namespace: null
notes:
enabled: true
namespace: null
nubus:
enabled: true
namespace: null
openproject:
enabled: true
namespace: null
oxAppSuite:
enabled: true
namespace: null
postfix:
enabled: true
namespace: null
postgresql:
enabled: true
namespace: null
redis:
enabled: true
namespace: null
staticFiles:
enabled: true
namespace: null
xwiki:
enabled: true
namespace: null
cache:
intercomService:
host: redis-headless
password: ""
port: 6379
username: default
nextcloud:
host: redis-headless
password: ""
port: 6379
tls: false
username: default
notes:
host: redis-headless
password: ""
port: 6379
openproject:
host: memcached
port: 11211
oxAppSuite:
host: redis-headless
password: ""
port: 6379
username: default
umsSelfservice:
host: memcached
port: 11211
certificate:
issuerRef:
kind: ClusterIssuer
name: letsencrypt-prod
selfSigned: false
wildcard: "false"
charts:
cassandra:
name: cassandra
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 12.0.4
certificates:
name: opendesk-certificates
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-certificates
verify: true
version: 3.1.1
clamav:
name: opendesk-clamav
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav
verify: true
version: 4.0.6
clamavSimple:
name: clamav-simple
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav
verify: true
version: 4.0.6
collabora:
name: collabora-online
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/collabora/charts-mirror
verify: true
version: 1.1.37
collaboraController:
name: cool-controller
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror
verify: false
version: 1.1.2
cryptpad:
name: cryptpad
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/charts-mirror
verify: true
version: 0.0.20
dkimpy:
name: opendesk-dkimpy-milter
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter
verify: true
version: 1.0.0
dovecot:
name: dovecot
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-dovecot
verify: true
version: 2.0.0
element:
name: opendesk-element
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
elementWellKnown:
name: opendesk-well-known
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
home:
name: opendesk-home
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-home
verify: true
version: 1.0.2
intercomService:
name: intercom-service
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/charts-mirror
verify: true
version: 2.12.0
jitsi:
name: opendesk-jitsi
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-jitsi
verify: true
version: 3.1.0
mariadb:
name: mariadb
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-mariadb
verify: true
version: 3.0.3
matrixNeoboardWidget:
name: matrix-neoboard-widget
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixNeochoiceWidget:
name: matrix-neochoice-widget
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixNeodatefixBot:
name: matrix-neodatefix-bot
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixNeodatefixWidget:
name: matrix-neodatefix-widget
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixUserVerificationService:
name: opendesk-matrix-user-verification-service
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
memcached:
name: memcached
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 6.7.1
migrations:
name: opendesk-migrations
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-migrations
verify: true
version: 1.6.0
minio:
name: minio
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 14.10.1
nextcloud:
name: opendesk-nextcloud
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
verify: true
version: 4.0.3
nextcloudManagement:
name: opendesk-nextcloud-management
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
verify: true
version: 4.0.3
nginx:
name: nginx
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 15.9.3
nginxS3Gateway:
name: nginx-s3-gateway
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/nginx-s3-gateway
verify: true
version: 1.0.1
notes:
name: impress
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/dinum/charts/notes
verify: true
version: 2.0.0
nubus:
name: nubus
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/charts-mirror
verify: true
version: 1.8.0
opendeskAlerts:
name: opendesk-alerts
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-alerts
verify: true
version: 1.1.1
opendeskDashboards:
name: opendesk-dashboards
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-dashboards
verify: true
version: 1.1.1
opendeskKeycloakBootstrap:
name: opendesk-keycloak-bootstrap
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap
verify: true
version: 2.6.0
opendeskStaticFiles:
name: opendesk-static-files
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-static-files
verify: true
version: 4.0.1
openproject:
name: openproject
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/openproject/charts-mirror
verify: true
version: 9.9.0
openprojectBootstrap:
name: opendesk-openproject-bootstrap
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap
verify: true
version: 2.2.0
otterize:
name: opendesk-otterize
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-otterize
verify: true
version: 2.1.3
oxAppSuite:
name: appsuite-public-sector
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/charts-mirror
verify: false
version: 2.17.164
oxAppSuiteBootstrap:
name: opendesk-open-xchange-bootstrap
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
verify: true
version: 2.1.2
oxConnector:
name: ox-connector
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/charts-mirror
verify: true
version: 0.19.0
postfix:
name: postfix
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-postfix
verify: true
version: 3.0.1
postgresql:
name: postgresql
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-postgresql
verify: true
version: 2.1.2
redis:
name: redis
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 18.6.1
synapse:
name: opendesk-synapse
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
synapseAdmin:
name: opendesk-synapse-admin
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapseAdminbotWeb:
name: opendesk-synapse-adminbot-web
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapseCreateAccount:
name: opendesk-synapse-create-account
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
synapseGroupsync:
name: opendesk-synapse-groupsync
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapsePipe:
name: opendesk-synapse-pipe
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapseWeb:
name: opendesk-synapse-web
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
xwiki:
name: xwiki
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/charts-mirror
verify: false
version: 1.4.4
cluster:
container:
engine: cri-o
networking:
cidr:
- 10.0.0.0/8
domain: cluster.local
incomingCIDR: []
ingressGatewayIP: ""
ipFamilies: DualStack
loadBalancerStatusField: ip
persistence:
readWriteMany:
enabled: false
service:
type: LoadBalancer
customization:
release:
cassandra: {}
clamav: {}
clamavSimple: {}
collaboraController: {}
collaboraOnline: {}
cryptpad: {}
dovecot: {}
intercomService: {}
jitsi: {}
mariadb: {}
matrixNeoboardWidget: {}
matrixNeochoiceWidget: {}
matrixNeodatefixBot: {}
matrixNeodatefixBotBootstrap: {}
matrixNeodatefixWidget: {}
matrixUserVerificationService: {}
matrixUserVerificationServiceBootstrap: {}
memcached: {}
migrationsPost: {}
migrationsPre: {}
minio: {}
nginxS3Gateway: {}
notes: {}
opendeskAlerts: {}
opendeskCertificates: {}
opendeskDashboards: {}
opendeskDkimpyMilter: {}
opendeskElement: {}
opendeskHome: {}
opendeskKeycloakBootstrap: {}
opendeskNextcloud: {}
opendeskNextcloudManagement: {}
opendeskOpenprojectBootstrap: {}
opendeskOpenxchangeBootstrap: {}
opendeskOtterize: {}
opendeskStaticFiles: {}
opendeskSynapse: {}
opendeskSynapseAdmin: {}
opendeskSynapseAdminbotBootstrap: {}
opendeskSynapseAdminbotPipe: {}
opendeskSynapseAdminbotWeb: {}
opendeskSynapseAuditbotBootstrap: {}
opendeskSynapseAuditbotPipe: {}
opendeskSynapseGroupsync: {}
opendeskSynapseWeb: {}
opendeskWellKnown: {}
openproject: {}
openxchange: {}
oxConnector: {}
postfix: {}
postgresql: {}
redis: {}
ums: {}
xwiki: {}
databases:
defaults:
userConnectionLimit: 100
dovecotACL:
connectionLimit: null
host: cassandra
name: dovecot_acl
password: ""
port: 9042
type: cassandra
username: dovecot_acl_user
dovecotDictmap:
connectionLimit: null
host: cassandra
name: dovecot_dictmap
password: ""
port: 9042
type: cassandra
username: dovecot_dictmap_user
keycloak:
connectionLimit: null
host: postgresql
name: keycloak
password: ""
port: 5432
type: postgresql
username: keycloak_user
keycloakExtension:
connectionLimit: null
host: postgresql
name: keycloak_extensions
password: ""
port: 5432
ssl: "false"
type: postgresql
username: keycloak_extensions_user
nextcloud:
connectionLimit: null
host: postgresql
name: nextcloud
password: ""
port: 5432
type: postgresql
username: nextcloud_user
notes:
connectionLimit: null
host: postgresql
name: notes
password: ""
port: 5432
type: postgresql
username: notes_user
openproject:
connectionLimit: null
host: postgresql
name: openproject
password: ""
port: 5432
type: postgresql
username: openproject_user
oxAppSuite:
connectionLimit: null
host: mariadb
name: configdb
password: ""
port: 3306
readHost: null
readPassword: null
readUser: null
type: mariadb
username: root
synapse:
channelBinding: prefer
clientEncoding: auto
connectTimeout: 10
connectionLimit: null
connectionPoolMax: "5"
connectionPoolMin: "3"
gssencmode: prefer
host: postgresql
keepalives: 1
keepalivesCount: 3
keepalivesIdle: 10
keepalivesInterval: 10
name: matrix
password: ""
port: 5432
replication: false
requireAuth: []
sslMinProtocolVersion: TLSv1.2
sslcompression: 0
sslmode: prefer
type: postgresql
username: matrix_user
umsGuardianManagementApi:
connectionLimit: null
host: postgresql
name: guardianmanagementapi
password: ""
port: 5432
type: postgresql
username: guardianmanagementapi_user
umsNotificationsApi:
connectionLimit: null
host: postgresql
name: notificationsapi
password: ""
port: 5432
type: postgresql
username: notificationsapi_user
umsSelfservice:
connectionLimit: 10
host: postgresql
name: selfservice
password: ""
port: 5432
type: postgresql
username: selfservice_user
xwiki:
connectionLimit: null
host: postgresql
name: xwiki
password: ""
port: 5432
type: postgresql
username: xwiki_user
debug:
cleanup:
deletePodsOnSuccess: true
deletePodsOnSuccessTimeout: 60
keepPVCOnDelete: false
keepRessourceOnDelete: true
enabled: false
enterpriseFeatures:
collabora:
autoscaling:
maxReplicas: 4
minReplicas: 1
scaleDownDisabled: false
targetCPUUtilizationPercentage: 99
targetMemoryUtilizationPercentage: 99
enterpriseKeys:
nextcloud:
subscriptionData: ""
subscriptionKey: ""
openproject:
token: null
xwiki:
opendeskEnterpriseLicense: ""
proApplicationslicense: ""
functional:
admin:
portal:
deploymentTimestamp:
enabled: true
authentication:
newDeviceLoginNotification:
enabled: true
oidc:
clientScopes: null
clients: null
realmSettings:
accessTokenLifespan: 300
clientOfflineSessionIdleTimeout: 0
clientOfflineSessionMaxLifespan: 0
clientSessionIdleTimeout: 0
clientSessionMaxLifespan: 0
offlineSessionIdleTimeout: 2592000
offlineSessionMaxLifespan: 5184000
offlineSessionMaxLifespanEnabled: false
revokeRefreshToken: false
ssoSessionIdleTimeout: 14400
ssoSessionMaxLifespan: 57600
ssoFederation:
enabled: false
enforceFederatedLogin: false
idpDetails: {}
name: My upstream IdP
twoFactor:
groups:
- foo
chat:
matrix:
profile:
allowUsersToUpdateDisplayname: true
useImmutableIdentifierForLocalpart: false
dataProtection:
jitsiRoomHistory:
enabled: true
matrixPresence:
enabled: false
externalServices:
matrix:
federation:
domainAllowList: []
enabled: true
nubus:
udmRestApi:
enabled: true
filestore:
nextcloud:
retentionObligation:
trashbin: auto
versions: auto
quota:
default: 1
sharing:
external:
enabled: false
enforcePasswords: false
expiry:
activeByDefault: true
defaultDays: 30
enforced: false
sendPasswordMail: true
internal:
expiry:
activeByDefault: false
defaultDays: 90
enforced: false
migration:
oxAppSuite:
enabled: false
portal:
enforceLogin: true
linkLegalNotice: https://opendesk.eu/impressum
linkPrivacyStatement: https://zendis.de/datenschutzerklaerung
global:
additionalMailDomains: ""
domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
helmRegistry: ""
hosts:
adminBot: adminbot
collabora: office
cryptpad: pad
element: chat
intercomService: ics
jitsi: meet
keycloak: id
matrixNeoBoardWidget: matrix-neoboard-widget
matrixNeoChoiceWidget: matrix-neochoice-widget
matrixNeoDateFixBot: matrix-neodatefix-bot
matrixNeoDateFixWidget: matrix-neodatefix-widget
minioApi: objectstore
minioConsole: objectstore-ui
nextcloud: files
notes: notes
nubus: portal
openproject: projects
openxchange: webmail
static: static
synapse: matrix
synapseAdmin: synapse-admin
synapseFederation: matrix-federation
whiteboard: whiteboard
xwiki: wiki
imagePullPolicy: IfNotPresent
imagePullSecrets: []
imageRegistry: ""
mailDomain: ""
matrixDomain: ""
systemInformation:
releaseVersion: v1.3.2
images:
bitnamiOSShell:
registry: registry-1.docker.io
repository: bitnami/os-shell
tag: 12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0
cassandra:
registry: registry-1.docker.io
repository: bitnami/cassandra
tag: 5.0.2-debian-12-r1@sha256:9f5fd6fe3a24b7e5ea215a99a0e0d6a10d11a914d6eb8c511780271a9097f5ea
cassandraExporter:
registry: registry-1.docker.io
repository: bitnami/cassandra-exporter
tag: 2.3.8-debian-12-r31@sha256:ae861f6c8712dd32c2304c680e4564802df689a62dc4aed2f4e7cfcbba8a8051
clamd:
registry: registry-1.docker.io
repository: clamav/clamav
tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f
collabora:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk
tag: 24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f
collaboraController:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/collabora/images-mirror/cool-controller
tag: 1.1.1@sha256:8a5b79920fdf7a8eb9c1e781f480d6134a30c75f14fae3f1ecb0b607e016215c
cryptpad:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad
tag: opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17
dkimpy:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/dkimpy-milter
tag: 1.1.0@sha256:f140c7fc3fd9636addc612edd6e10f6aefa69e34ff637c95ce9036a32e44555f
dovecot:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector
tag: 2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc
dovecotBootstrap:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9
element:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin
tag: latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1
elementAdminBot:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/access_element_web
tag: v1.11.85@sha256:0e36121cbaab5a8146ef8561d8e77b38f711f855f1a353df3bb96a8d13303812
elementGroupsync:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/groupsync
tag: v0.14.0@sha256:a8cee92b9035d8cc80cc13194e4e0118c7dfbfcbc4c0ee5ac173582d0cd55846
elementHaProxy:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/haproxy
tag: 3.0-alpine@sha256:c22c8710886104a48b920306f063401f0d11811858e3c6b9d87d88a7556b2e61
elementPipe:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/pipe
tag: 6.3.1@sha256:7f487af25f220d31aa987665f9d1393b42e925c6b1a7e0458daaa91e8e7bf0c4
elementSynapseAdmin:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/synapse_admin
tag: v16.105.5-24.10@sha256:563979fc69162adf93f1286cf79dcbe58adf878a0e4e9332044e5ab6a7170350
elementSyncAdmins:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-element-syncadmins
tag: 1.0.3@sha256:1dea24d5f65a6f9ac63b402c772dd81dcd07a847d24845901c8a039461043097
freshclam:
registry: registry-1.docker.io
repository: clamav/clamav
tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f
icap:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/clamav-icap
tag: 0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a
intercom:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/intercom-service
tag: 2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1
jibri:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jibri
tag: stable-9955@sha256:a07b82f2758389b2071c794810145111641e78f1b768b1bbfa6d3d1dc76d3da9
jicofo:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo
tag: stable-9955@sha256:f1a1478d231bc4891b5eea06443d72187c378d5e38403bb545aab281446f8d50
jigasi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jigasi
tag: stable-9955@sha256:0e191ac39d3e7299d0bcc070fa1867cceb17fe8d92e9d5cd492aec4c268fa56f
jitsi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/web
tag: stable-9955@sha256:81fdcfa14287fe3358532c363875584d0cdd40ff4030695b713af6e60192d306
jitsiKeycloakAdapter:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter
tag: v20250314@sha256:2e24db127ab266b90b8fd371ce547e7f9619b6be3fefed30906867b1ce368697
jitsiPatchJVB:
registry: registry-1.docker.io
repository: bitnami/kubectl
tag: 1.32.0@sha256:48c81b7aaf4fabf2733a0b888960f6982181fbcd2c3f8dfcebc4a1a065631162
jvb:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jvb
tag: stable-9955@sha256:27753ac320910e04f5c4f4f628d20995ea969ea38523d90a9066adc52f9bc022
mariadb:
registry: registry-1.docker.io
repository: library/mariadb
tag: 10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f
matrixNeoBoardWidget:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget
tag: 2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5
matrixNeoChoiceWidget:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget
tag: 1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb
matrixNeoDateFixBot:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot
tag: 2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96
matrixNeoDateFixWidget:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget
tag: 1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b
matrixUserVerificationService:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service
tag: v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008
memcached:
registry: registry-1.docker.io
repository: bitnami/memcached
tag: 1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d
migrations:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-migrations
tag: 1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7
milter:
registry: registry-1.docker.io
repository: clamav/clamav
tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f
minio:
registry: registry-1.docker.io
repository: bitnami/minio
tag: 2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135
nextcloud:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud
tag: 2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4
nextcloudExporter:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter
tag: 1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0
nginxS3Gateway:
registry: registry-1.docker.io
repository: nginxinc/nginx-s3-gateway
tag: unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4
notesBackend:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-notes
tag: 1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef
notesFrontend:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-notes
tag: 1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887
notesYProvider:
registry: registry-1.docker.io
repository: lasuite/impress-y-provider
tag: v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1
nubusDataLoader:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/data-loader
tag: 0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb
nubusGuardianAuthorizationApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api
tag: 2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5
nubusGuardianManagementApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api
tag: 2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2
nubusGuardianManagementUi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui
tag: 2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf
nubusGuardianProvisioning:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-init
tag: 0.17.0@sha256:56acfc53c3d3e0a20ff77fe427ae794adbf03ccc66972c95188e0da9e87c4a62
nubusKeycloak:
registry: artifacts.software-univention.de
repository: nubus/keycloak
tag: 25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65
nubusKeycloakBootstrap:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap
tag: 0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa
nubusKeycloakExtensionHandler:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler
tag: 0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c
nubusKeycloakExtensionProxy:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy
tag: 0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056
nubusLdapNotifier:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier
tag: 0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7
nubusLdapServer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server
tag: 0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984
nubusLdapServerDhInitContainer:
registry: registry-1.docker.io
repository: natsio/nats-box
tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51
nubusLdapServerLeaderElector:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector
tag: 0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c
nubusNats:
registry: registry-1.docker.io
repository: library/nats
tag: 2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7
nubusNatsBox:
registry: registry-1.docker.io
repository: natsio/nats-box
tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51
nubusNatsReloader:
registry: registry-1.docker.io
repository: natsio/nats-server-config-reloader
tag: 0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99
nubusNotificationsApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/notifications-api
tag: 0.63.0@sha256:4c2e01e609fb83df6d090c389b5c63d4b1477bdb133b910cacf2f2a1ce1c39e1
nubusOpenPolicyAgent:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa
tag: 2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4
nubusOpendeskExtension:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nubus
tag: 1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b
nubusOpendeskExtensionA2gMapper:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper
tag: 1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d
nubusOxExtension:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-extension
tag: 0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11
nubusPortalConsumer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer
tag: 0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc
nubusPortalExtension:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-extension
tag: 0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900
nubusPortalFrontend:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update
tag: 1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b
nubusPortalServer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-server
tag: 0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27
nubusProvisioningDispatcher:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher
tag: 0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd
nubusProvisioningEventsAndConsumerApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api
tag: 0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a
nubusProvisioningPrefill:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill
tag: 0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788
nubusProvisioningUdmListener:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener
tag: 0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7
nubusProvisioningUdmTransformer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer
tag: 0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e
nubusSelfServiceConsumer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation
tag: 0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0
nubusUdmRestApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api
tag: 0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2
nubusUmcGateway:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway
tag: 0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1
nubusUmcServer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-server
tag: 0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d
nubusUmcServerProxy:
registry: registry-1.docker.io
repository: library/traefik
tag: 3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e
nubusWaitForDependency:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency
tag: 0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8
opendeskKeycloakBootstrap:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap
tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7
opendeskStaticFiles:
registry: registry-1.docker.io
repository: library/nginx
tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4
openproject:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/openproject/images-mirror/open_desk
tag: 15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
openprojectBootstrap:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap
tag: 1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d
openprojectDbInit:
registry: registry-1.docker.io
repository: library/postgres
tag: 16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0
openxchangeBootstrap:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803
openxchangeCoreGuidedtours:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours
tag: 8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a
openxchangeCoreMW:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector
tag: 8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2
openxchangeCoreUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui
tag: 8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f
openxchangeCoreUIMiddleware:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware
tag: 2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3
openxchangeCoreUserGuide:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide
tag: 8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5
openxchangeDocumentConverter:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter
tag: 8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c
openxchangeGotenberg:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg
tag: 8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172
openxchangeGuardUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui
tag: 8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b
openxchangeImageConverter:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter
tag: 8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372
openxchangeNextcloudIntegrationUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui
tag: 1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e
openxchangePublicSectorUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui
tag: 2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6
oxConnector:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone
tag: 0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e
postfix:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/postfix
tag: 3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d
postfixBootstrap:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9
postgresql:
registry: registry-1.docker.io
repository: library/postgres
tag: 15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b
prosody:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/prosody
tag: stable-9955@sha256:fa66872338c7c3b6fdb1f1a67ad770f2b62948f4193b91a58f12c0aa5ca2e783
redis:
registry: registry-1.docker.io
repository: bitnami/redis
tag: 7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0
synapse:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/synapse
tag: v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc
synapseCreateUser:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619
synapseGuestModule:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module
tag: 1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea
synapseWeb:
registry: registry-1.docker.io
repository: rapidfort/haproxy-official
tag: 2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c
wellKnown:
registry: registry-1.docker.io
repository: library/nginx
tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4
xwikiMariadb:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki
tag: 0.25-mariadb-jetty-alpine@sha256:7175ef5e454b4eb0f6fd6a92a9503d8a680db3ca97b25c3a4eedac9c9bfbcdaf
xwikiPostgres:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki
tag: 0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335
ingress:
enabled: true
ingressClassName: nginx
parameters:
bodySize:
collabora: 100M
element: 100M
nextcloud: 100M
openproject: 100M
oxAppSuite: 100M
xwiki: 100M
bodyTimeout:
collabora: 600
element: 60
nextcloud: 600
openproject: 60
oxAppSuite: 60
xwiki: 60
tls:
enabled: true
secretName: opendesk-certificates-tls
ldap:
baseDn: dc=swp-ldap,dc=internal
host: ums-ldap-server
notifierHost: ums-ldap-notifier
monitoring:
grafana:
dashboards:
annotations: null
enabled: false
labels:
grafana_dashboard: "1"
prometheus:
podMonitors:
enabled: false
labels:
release: kube-prometheus-stack
prometheusRules:
annotations: {}
enabled: false
labels:
release: kube-prometheus-stack
serviceMonitors:
enabled: false
labels:
release: kube-prometheus-stack
objectstores:
dovecot:
bucket: dovecot
endpoint: ""
pathStyle: true
port: 443
region: eu-west-1
secretKey: ""
storageClass: STANDARD
useSSL: true
username: dovecot_user
migrations:
bucket: migrations
endpoint: ""
pathStyle: true
port: 443
region: eu-west-1
secretKey: ""
storageClass: STANDARD
useSSL: true
username: migration_user
nextcloud:
bucket: nextcloud
endpoint: ""
pathStyle: true
port: 443
region: eu-west-1
secretKey: ""
storageClass: STANDARD
useSSL: true
username: nextcloud_user
notes:
bucket: notes
endpoint: ""
port: 443
secretKey: ""
username: notes_user
nubus:
bucket: ums
endpoint: ""
region: eu-west-1
secretKey: ""
username: ums_user
openproject:
bucket: openproject
directUploads: true
enableSignatureV4Streaming: true
endpoint: ""
pathStyle: true
region: eu-west-1
secretKey: ""
useIamProfile: false
username: openproject_user
persistence:
storageClassNames:
RWO: ""
RWX: ""
storages:
cassandra:
commitLogsize: 256Mi
size: 1Gi
storageClassName: null
clamav:
size: 1Gi
storageClassName: null
dovecot:
size: 1Gi
storageClassName: null
mariadb:
size: 1Gi
storageClassName: null
matrixNeoDateFixBot:
size: 1Gi
storageClassName: null
minio:
size: 10Gi
storageClassName: null
nubusLdapServerData:
size: 1Gi
storageClassName: null
nubusPortalConsumer:
size: 1Gi
storageClassName: null
nubusProvisioningNats:
size: 1Gi
storageClassName: null
oxConnector:
size: 1Gi
storageClassName: null
postfix:
size: 1Gi
storageClassName: null
postgresql:
size: 1Gi
storageClassName: null
prosody:
size: 1Gi
storageClassName: null
redis:
size: 1Gi
storageClassName: null
synapse:
size: 1Gi
storageClassName: null
xwiki:
size: 1Gi
storageClassName: null
platform:
realm: opendesk
replicas:
cassandra: 1
clamav: 1
clamd: 1
collabora: 1
collaboraController: 1
cryptpad: 1
dkimpy: 1
dovecot: 1
element: 1
freshclam: 1
icap: 1
intercomService: 1
jibri: 1
jicofo: 1
jigasi: 1
jitsi: 1
jitsiKeycloakAdapter: 1
jvb: 1
keycloak: 1
mariadb: 1
matrixNeoBoardWidget: 1
matrixNeoChoiceWidget: 1
matrixNeoDateFixBot: 1
matrixNeoDateFixWidget: 1
matrixUserVerificationService: 1
memcached: 1
milter: 1
minio: 1
nextcloud: 1
nextcloudExporter: 1
nginxS3Gateway: 1
notesBackend: 1
notesFrontend: 1
notesYProvider: 1
opendeskStaticFiles: 1
openprojectWeb: 1
openprojectWorker: 1
openxchangeCoreDocumentConverter: 1
openxchangeCoreGuidedtours: 1
openxchangeCoreImageConverter: 1
openxchangeCoreMW: 1
openxchangeCoreUI: 1
openxchangeCoreUIMiddleware: 1
openxchangeCoreUserGuide: 1
openxchangeGotenberg: 1
openxchangeGuardUI: 1
openxchangeNextcloudIntegrationUI: 1
openxchangePluginsUI: 1
openxchangePublicSectorUI: 1
oxConnector: 1
postfix: 1
postgres: 1
redis: 1
synapse: 1
synapseWeb: 1
umsGuardianAuthorizationApi: 1
umsGuardianManagementApi: 1
umsGuardianManagementUi: 1
umsGuardianOpenPolicyAgent: 1
umsKeycloakExtensionsHandler: 1
umsKeycloakExtensionsProxy: 1
umsLdapNotifier: 1
umsLdapServerPrimary: 2
umsLdapServerProxy: 2
umsLdapServerSecondary: 2
umsNotificationsApi: 1
umsPortalConsumer: 1
umsPortalFrontend: 1
umsPortalServer: 1
umsProvisioningApi: 1
umsProvisioningDispatcher: 1
umsProvisioningNats: 1
umsProvisioningPrefill: 1
umsProvisioningUdmTransformer: 1
umsSelfserviceConsumer: 1
umsUdmListener: 1
umsUdmRestApi: 1
umsUmcGateway: 1
umsUmcServer: 1
umsUmcServerProxy: 1
wellKnown: 1
xwiki: 1
repositories:
clamav:
auth: {}
customURLs:
- scheme: https
url: ftp.swin.edu.au/sanesecurity/badmacro.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/blurl.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_js.cdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_js.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/hackingteam.hsb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/junk.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/jurlbl.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/jurlbla.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/lott.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/malwarehash.hsb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/phish.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/phishtank.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/porcupine.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/rogue.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/scam.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/shelter.ldb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spamattach.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spamimg.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spear.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spearl.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_malware.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb
- scheme: https
url: urlhaus.abuse.ch/downloads/urlhaus.ndb
mirror:
scheme: https
url: clamavdb.c3sl.ufpr.br
helm:
registryOpencodeDe: ""
registryOpencodeDeEnterprise: registry.opencode.de
image:
dockerHub: ""
registryOpencodeDe: ""
registryOpencodeDeEnterprise: ""
resources:
cassandra:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1Gi
clamd:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1.5Gi
collabora:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 512Mi
collaboraController:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
cryptpad:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
dkimpy:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
dovecot:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
element:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
freshclam:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 96Mi
icap:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
intercomService:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 64Mi
jibri:
limits:
cpu: 99
memory: 3Gi
requests:
cpu: 0.1
memory: 384Mi
jicofo:
limits:
cpu: 99
memory: 3584Mi
requests:
cpu: 0.1
memory: 256Mi
jigasi:
limits:
cpu: 99
memory: 3584Mi
requests:
cpu: 0.1
memory: 256Mi
jitsi:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 32Mi
jitsiKeycloakAdapter:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.01
memory: 48Mi
jvb:
limits:
cpu: 99
memory: 3584Mi
requests:
cpu: 0.1
memory: 384Mi
mariadb:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 384Mi
matrixNeoBoardWidget:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 48Mi
matrixNeoChoiceWidget:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
matrixNeoDateFixBot:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 128Mi
matrixNeoDateFixWidget:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
matrixUserVerificationService:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
memcached:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
milter:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.1
memory: 16Mi
minio:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 256Mi
nextcloud:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
nextcloudCron:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
nextcloudExporter:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
nginxS3Gateway:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 100m
memory: 16Mi
notesBackend:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 512Mi
notesFrontend:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
notesYProvider:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
opendeskKeycloakBootstrap:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
opendeskStaticFiles:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 0.01
memory: 16Mi
openproject:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 768Mi
openprojectAppInit:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
openprojectDbInit:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
openprojectSeederJob:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
openprojectWorkers:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.25
memory: 512Mi
openxchangeCoreDocumentConverter:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 1.25Gi
openxchangeCoreGuidedtours:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangeCoreImageConverter:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.5
memory: 1.25Gi
openxchangeCoreMW:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 1
memory: 1.25Gi
openxchangeCoreUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangeCoreUIMiddleware:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.5
memory: 192Mi
openxchangeCoreUIMiddlewareUpdater:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.5
memory: 192Mi
openxchangeCoreUserGuide:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.02
memory: 32Mi
openxchangeGotenberg:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.05
memory: 32Mi
openxchangeGuardUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangeNextcloudIntegrationUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangePluginsUI:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.05
memory: 32Mi
openxchangePublicSectorUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
oxConnector:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 64Mi
postfix:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
postgresql:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
prosody:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 32Mi
redis:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
synapse:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 256Mi
synapseWeb:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 64Mi
umsGuardianAuthorizationApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsGuardianManagementApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsGuardianManagementUi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsKeycloak:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
umsKeycloakBootstrap:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
umsKeycloakExtensionHandler:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
umsKeycloakExtensionProxy:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
umsLdapNotifier:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsLdapServer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsNotificationsApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsOpenPolicyAgent:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalConsumer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalConsumerDependencies:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalFrontend:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalServer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsProvisioningApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 100Mi
umsProvisioningDispatcher:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsProvisioningNats:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 128Mi
umsProvisioningPrefill:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsProvisioningRegisterConsumers:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
umsProvisioningUdmTransformer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
umsSelfserviceConsumer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsStackDataUms:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUdmListener:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUdmRestApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUdmRestApiInit:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUmcGateway:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUmcServer:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
wellKnown:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
xwiki:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 0.1
memory: 1.5Gi
sample:
withTemplating: ""
withoutTemplating: my_value
seLinuxOptions:
cassandra: null
clamav: null
clamavSimple: null
clamd: null
collabora: null
collaboraController: null
cryptpad: null
dkimpy: null
dovecot: null
element: null
freshclam: null
icap: null
intercom: null
jicofo: null
jigasi: null
jitsi: null
jitsiKeycloakAdapter: null
jitsiPatchJVB: null
jvb: null
mariadb: null
matrixNeoBoardWidget: null
matrixNeoChoiceWidget: null
matrixNeoDateFixBot: null
matrixNeoDateFixWidget: null
matrixUserVerificationService: null
memcached: null
migrations: null
milter: null
minio: null
nextcloud: null
nextcloudExporter: null
nextcloudManagement: null
notesBackend: null
notesFrontend: null
notesYProvider: null
opendeskKeycloakBootstrap: null
opendeskStaticFiles: null
openproject: null
openprojectBootstrap: null
openprojectDbInit: null
openxchangeBootstrap: null
openxchangeCoreGuidedtours: null
openxchangeCoreMW: null
openxchangeCoreUI: null
openxchangeCoreUIMiddleware: null
openxchangeCoreUserGuide: null
openxchangeDocumentConverter: null
openxchangeGotenberg: null
openxchangeGuardUI: null
openxchangeImageConverter: null
openxchangeNextcloudIntegrationUI: null
openxchangePluginsUI: null
openxchangePublicSectorUI: null
oxConnector: null
postfix: null
postgresql: null
prosody: null
redis: null
synapse: null
synapseCreateUser: null
synapseGuestModule: null
synapseWeb: null
umsGuardianAuthorizationApi: null
umsGuardianManagementApi: null
umsGuardianManagementUi: null
umsGuardianOpenPolicyAgent: null
umsKeycloak: null
umsKeycloakBootstrap: null
umsKeycloakExtensionHandler: null
umsKeycloakExtensionProxy: null
umsLdapNotifier: null
umsLdapServer: null
umsNotificationsApi: null
umsPortalConsumer: null
umsPortalFrontend: null
umsPortalServer: null
umsProvisioning: null
umsProvisioningNats: null
umsSelfserviceConsumer: null
umsStackDataUms: null
umsUdmListener: null
umsUdmRestApi: null
umsUmcGateway: null
umsUmcServer: null
wellKnown: null
xwiki: null
secrets:
cassandra:
dovecotACLUser: c89fe1500bb39e79ca949a197a7266009a861e86
dovecotDictmapUser: 6e6db3489ebc6f39bfcd77050885196dba3899c6
rootPassword: af7a37694032f6e8072b001b15ada3bbb315317a
centralnavigation:
apiKey: 1e2eb0fc3815d766ef1be11fb4edba676856ba52
certificates:
password: d4434074a779300dbbef2c812c66fbba163e3818
collabora:
adminPassword: 1f18028954368652aa70c5498a52f194e721b145
dovecot:
doveadm: 2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9
intercom:
secret: 3eb73e36131cd6a817564c2144363875cf63a490
synapseAsToken: f4a859990d1d37276a77e88ccd1e67d158b5e18f
jitsi:
jibriRecorderPassword: b83c2f95314c17ce17b471dd2ec6608df5ee72ee
jibriXmppPassword: 76d4cf37e97b5fc5e637ac4b916e6c4cbb0d8abf
jicofoAuthPassword: 888d06581d177bf49018de077e5acea91fffbefb
jicofoComponentPassword: 791dc50a4a70ee7a307f01d1789a80406de63dff
jigasiXmppPassword: 457d88f74b34443bde192b0b20df915103200da4
jvbAuthPassword: e1094c9de9dfdc7ebf32f9a442780cd50f7fa0ee
jwtAppSecret: d26cc08b285a55fb53cc6a05734beecc4d1683ab
keycloak:
adminPassword: 81d3190e7a7467137ccb11c6fdd2c296986275db
clientSecret:
as8oidc: ba9c972d28385e400bc71a5869b8219ec42afb45
dovecot: b4b4e59939b23669b1287c722376441b0bdcddfa
guardian: cdfd791d2b9460c15334d4b8e46df698b3e3bd9f
intercom: d42f6afee33e28f01222383c86e8741b98e14924
jitsi: 6dfdd4ee34e8b7ceebc7406b4113faea8738dc73
matrix: b4f6604310ebd2d06b5fc8832ae1095e43481b04
ncoidc: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8
notes: 0cbc7a3257db722ed76270a547c7dccf1f84db87
openproject: 3621e456b58b341fe12689612e0ca7820974d274
xwiki: af1243a89d9b55965b6395e3ab7cc6d004dbcdab
mariadb:
nextcloudUser: 2ab459d441e9967df1d0a5d1844d230b490515ea
openxchangeUser: 9778a34a657fc40e8f7e16bea4fd84d8e64e224c
rootPassword: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
xwikiUser: d6d97039490cb8fb1179f816c3220b92b8f270bb
matrixAdminBot:
backupPassphrase: 7657d0355bb64ec8051bc353bd554708c3707b7a
password: 1a5a01b8ec8961a12669d1261a8ae78211660ec4
synapseAsToken: 614986fefd100bb4341c94a6d7bb201062eed05f
matrixAuditBot:
backupPassphrase: 12449fcf240e35921b93dc71bcf5946837c9fa0a
password: 76fd3d48911fb1e18c6e477c922339279268debd
synapseAsToken: bab5234abc7d477fed1a77166efd648f06db2f31
matrixGroupsync:
synapseAsToken: 15a3f24e76b700ff911e24224a69098b4f0d4164
matrixNeoDateFixBot:
password: f14e2756afd0fba205bd037f1d2363e7cedc8f89
matrixUserVerificationService:
password: 3187b7b18610762c770a46421965e3a7e6ce93f7
minio:
dovecotUser: a96922dd49c5ef516acca3aaf28ef92d0ae68174
migrationsUser: 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8
nextcloudUser: cd58fb1bf965a7605e316b394f11ae9c67b3220f
notesUser: 5c58820a84259ce3b869bfc267b53437f49d9902
openprojectUser: 200f449601dec2cd474d0695f4f802493413f322
rootPassword: 3c80db94b61453066c9b969361de14f66d5a611b
umsUser: 915f15805278ef774a1cf3abfa6b8623c1fa4544
nats:
natsAdminPassword: f076a4d9fceeea85cfb81f8769f3adf01e07bdc5
nextcloud:
adminPassword: d132ecf836fac6a43b19341f94d5effff7edee65
metricsToken: 53514b7a8729d5b3a6acdc6295ae3694f19065f9
notes:
collaborationSecret: c25d22c80c4c0728c3d3dacf268c171a1285301d
djangoSecretKey: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8
superuser: 65a3226e9c23d19a7eac7573a4920d9882b5464a
nubus:
guardian:
udmPassword: c5f71556f038329831204aa6a6f717f8ef0da6c5
ldapSearch:
dovecot: 40290e376095d33c0c650723efa007abec1ee3fd
element: 96380258a941863a5f9ecf74f3f88f1b563cae35
keycloak: 6f85092e969e10c851eef49367019d1e02a4a8a0
nextcloud: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0
openproject: 9c96f85df1170aaa929a6763111ff9472b2d109f
ox: 57356bf92e475164a8c4522dfd8453bb162094d4
xwiki: 8072148becdef928e46f5686560bbbcd9c9a4284
ldapSecret: b63d4de0d8766a932cad776066f76211906f8967
masterpassword: OpenDeskTest
portalConsumer:
provisioningApiPassword: 285e53cfa767e8788935963e6d60186f31a36879
provisioning:
api:
adminPassword: cb586a0ffaae0ed919024f900f871979bbcd1521
natsPassword: 95d501c0387cf0eec31aa80bb17f95f830a6251d
prefillPassword: b9a5a15f7e8c3101852f76d50e55ca9c9da7de10
udmTransformerPassword: 4aee10e27a9997767d5c22f7915d1549b6d08c93
dispatcherNatsPassword: b4b9a0246a4ad460f600be8b77af5861cde06201
prefillNatsPassword: 9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d
udmListenerNatsPassword: 0acadb5b0a2e885081a0ad98d44c0884c6aa517e
udmTransformerNatsPassword: 89a6741df85e8725261ad4fcc3c49ac7af505252
selfserviceConsumer:
provisioningApiPassword: 903594f7a3da64ac8573b35933f0546f2fb4d1e0
systemAccounts:
administratorPassword: 937393b22852fc828b0d68283dddcb9f8fb97411
sysIdpUserPassword: ae632ba815a15fbff51ba5bfb4a9490a12293bf6
openproject:
adminPassword: 487706602e4fedcb300a24af26a25be29bc8530c
apiAdminPassword: 9e8d27af068f15dce7b940241ddac82785935239
apiAdminUsername: abbb47d550ea03225cb109388f296cbc3a4b66eb
oxAppSuite:
adminPassword: 818f26bf8665480c7e1e2cedfaded285ac1c8b16
basicAuthPassword: 301711fcb8af664af271411cbf403d07f328712d
cookieHashSalt: 6da47cf7c319d398ae4c3a4823d54d6024e36fd0
hzGroupPassword: 6e1ec5fff93ffe194feaec82ae14836c3c33fcb8
jolokiaPassword: 2201ebdc53a32254a877e5055dcf0cf402630294
migrationsMasterPassword: 1748a0b8a43268f79f9b5a1d27be603ca563702c
oxguardMC: MCYjJmMmY3ZjVlZTFhOGEzYzY4ZDA=
oxguardRC: RCYThlMzYwMmNlMTM3MDA3NjM3Y2Q=
sessiondEncryptionKey: 43a02b231cc7515d147729011e55d33dbb7a10ff
shareCryptKey: 91281f20e0096f5ce2794799158ac91595386521
synapseAsToken: 5dbaa82eda85bb25f7963063b327555e3f3a821d
oxConnector:
provisioningApiPassword: 5b25d2be2690ee3acf32a4f93006e8010ff4bbd2
postfix:
opendeskSystemPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f
postgresql:
keycloakExtensionUser: a7125d58b42fc935fd603c362ddecbfafd92bca0
keycloakUser: 2a27e8e8f1148830c04a97d765173021337b738e
matrixUser: 5cd0a266029154912dd660f748137982a924e6f5
nextcloudUser: 0c6b73606d239fe1aba0b3f28ada476e3a58fa2f
notesUser: be74d99779cd9ad3426c25b026e0bec0784f7aff
openprojectUser: 0b4d7caf9005abcc8df53519620dd00619de27f8
postgresUser: e5c38aa93bd3191b54a288db3e820c103ebb52e0
umsGuardianManagementApiUser: 37b03322fc23defff213fe18e95448bd27f92652
umsNotificationsApiUser: d1f34090031fd52de9518c2665090822a0d1e17b
umsSelfserviceUser: 09af664fe11f675880a6dc980f0276f70d001104
xwikiUser: cf03170636d1fa89617370fe51aefc470221ae28
redis:
password: 07c524f0d3f95b4d03fea54ea10cfb848bdb355e
synapse:
registrationSharedSecret: fc72f9f14ac53672b134f6cbfa64f90bf866dfc5
whiteboard:
apiKey: 88f87d464a348ef695e42b91cc89f377b90892f4
xwiki:
superadminpassword: ae3a28d06563fbc8d1e7f00485a92d38616a7551
security:
clusterPostfix:
enabled: false
namespace: ""
ingressController:
namespace: ingress-nginx
podSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
otterizeIntents:
enabled: false
service:
type:
dovecot: null
jitsiVideoBridge: null
postfix: null
sip:
jigasi:
enabled: false
password: null
port: "5060"
server: ""
transport: TCP
uri: ""
smtp:
dkim:
key:
secret:
key: ""
name: ""
value: ""
selector: rsa
useED25519: false
host: ""
localpartNoReply: no-reply
password: ""
port: 587
username: ""
technical:
collabora:
numPrespawnChildren: 4
turn:
credentials: ""
server:
host: ""
port: "3478"
tls:
host: ""
port: "5349"
transport: udp
...
---
# Source: opendesk-migrations/templates/role.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "Role"
metadata:
name: opendesk-migrations-pre
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-pre
app.kubernetes.io/managed-by: Helm
rules:
#
# All Migrations: Allow self management of configmap
#
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["create"]
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["migrations-status"]
verbs: ["get", "patch"]
#
# run_4.py
#
# Delete StatefulSet of Nubus Portal Consumer
- apiGroups: ["apps"]
resources: ["statefulsets"]
resourceNames: ["ums-portal-consumer"]
verbs: ["delete"]
# Delete PVC of Nubus Portal Consumer to allow running as non-root
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
resourceNames: ["group-membership-cache-ums-portal-consumer-0"]
verbs: ["delete"]
# Execute slacpcat in LDAP Pod
- apiGroups: [""]
resources: ["pods/exec"]
resourceNames: ["ums-provisioning-nats-0"]
verbs: ["get", "create"]
# Restart of Deployments
- apiGroups: ["apps"]
resources: ["deployments"]
resourceNames: ["ums-provisioning-udm-transformer"]
verbs: ["update", "patch"]
# Restart of StatefulSets
- apiGroups: ["apps"]
resources: ["statefulsets"]
resourceNames: ["ums-provisioning-udm-listener"]
verbs: ["update", "patch"]
# Delete the Ingress
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
resourceNames: ["ums-minio-rewrites"]
verbs: ["delete"]
...
---
# Source: opendesk-migrations/templates/rolebinding.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "RoleBinding"
metadata:
name: opendesk-migrations-pre
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-pre
app.kubernetes.io/managed-by: Helm
roleRef:
apiGroup: "rbac.authorization.k8s.io"
kind: "Role"
name: opendesk-migrations-pre
subjects:
- kind: "ServiceAccount"
name: opendesk-migrations-pre
...
---
# Source: opendesk-migrations/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-migrations-pre-1"
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-pre
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-pre
app.kubernetes.io/managed-by: Helm
spec:
restartPolicy: "Never"
securityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: opendesk-migrations-pre
containers:
- name: "opendesk-migrations"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7"
imagePullPolicy: IfNotPresent
command:
- "/app/odmigs.py"
volumeMounts:
- name: "environmentdetails-volume"
mountPath: "/app/etc/"
readOnly: true
resources:
limits:
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
env:
- name: "MIGRATIONS_LOGLEVEL"
value: "INFO"
- name: "MIGRATIONS_CLEANUP"
value: "false"
- name: "MIGRATIONS_STAGE"
value: "PRE"
- name: "MIGRATIONS_RUN_ID"
value: "4"
- name: "MIGRATIONS_NAMESPACE"
value: "yschmidt-opendesk-argo"
- name: "MIGRATIONS_FAIL_ON_UNEXPECTED_STATE"
value: "true"
volumes:
- name: "environmentdetails-volume"
secret:
secretName: "opendesk-migrations-pre-environmentdetails"
...
---
# Source: opendesk-home/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-home"
labels:
app.kubernetes.io/name: opendesk-home
helm.sh/chart: opendesk-home-1.0.2
app.kubernetes.io/instance: opendesk-home
app.kubernetes.io/managed-by: Helm
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
location ~* "^/$" {
return 302 https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
}
nginx.org/server-snippets: |
location ~* "^/$" {
return 302 https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
}
haproxy.org/request-redirect: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
haproxy-ingress.github.io/redirect-to: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
...
---
# Source: opendesk-certificates/templates/certificate.yaml
apiVersion: "cert-manager.io/v1"
kind: "Certificate"
metadata:
name: "opendesk-certificates"
annotations:
"helm.sh/resource-policy": "keep"
labels:
app.kubernetes.io/name: opendesk-certificates
helm.sh/chart: opendesk-certificates-3.1.1
app.kubernetes.io/instance: opendesk-certificates
app.kubernetes.io/managed-by: Helm
spec:
dnsNames:
- "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "objectstore-ui.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "whiteboard.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
issuerRef:
kind: "ClusterIssuer"
name: "letsencrypt-prod"
...
---
# Source: opendesk-static-files/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: opendesk-static-files
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-element-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0/////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//tki//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6Omz/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3G1f/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/9Wmsv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3G1f/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP/VprL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/1aay///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6O2z/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/9Wmsv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP/VprL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2WM//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////9q8D/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//9q8D//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//9ucv//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/7Ncc//Ol6b/6tLY/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7pqgP/48PL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+eL03/6tLY/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pT5a//jw8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5cgQP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/ctL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////6tLY/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/q0tj//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////58wTv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/58wTv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////9Wmsv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////+PDy/8iJmv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8F6jf/48PL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/1qez/8iJmv+zXHT/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/s1x0/8iJmv/Wp7P/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-jitsi-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
b3ea2c80d902061a870360ef1c69dead0b0abff7.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSAzMi4xNzI1SDI3LjQ1MjJDMjMuMTQ2OSAzMi4xNzI1IDE5LjY1NjkgMzUuNjYyNiAxOS42NTY5IDM5Ljk2NzlWNzEuMTI3MkMxOS42NTY5IDc1LjQzMjUgMjMuMTQ2OSA3OC45MjI1IDI3LjQ1MjIgNzguOTIyNUg1OC42MTE1QzYyLjkxNjggNzguOTIyNSA2Ni40MDY5IDc1LjQzMjUgNjYuNDA2OSA3MS4xMjcyVjM5Ljk2NzlDNjYuNDA2OSAzNS42NjI2IDYyLjkxNjggMzIuMTcyNSA1OC42MTE1IDMyLjE3MjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05MS4zNDMxIDcyLjY4ODJDODEuODc2NSA3Mi42ODgyIDc0LjIwMjEgNjUuMDEzOSA3NC4yMDIxIDU1LjU0NzNDNzQuMjAyMSA0Ni4wODA4IDgxLjg3NjUgMzguNDA2NCA5MS4zNDMxIDM4LjQwNjRWNzIuNjg4MloiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg==
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-keycloak-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=
f26f33840612e492ead45fc5e75896de016f48b7.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjkzLjI1IDIxNC4wMiI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEyNi4xNCwxNDAuMzJ2Mi4xM2MwLDguOTktNy4zMSwxNi4zLTE2LjMsMTYuM2gtMzguMjZjLTguOTksMC0xNi4zLTcuMzEtMTYuMy0xNi4zdi0zOC4yNmMwLTguOTksNy4zMS0xNi4zLDE2LjMtMTYuM2gyLjEzdjUyLjQ0aDUyLjQ0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI2Ljg1LDEyNy41NmgtNDAuMzl2LTQ0LjY1YzAtMTUuMjQsMTIuNC0yNy42NCwyNy42NC0yNy42NGgxMi43NmMxNy41OCwwLDMxLjg5LDE0LjMxLDMxLjg5LDMxLjg5djguNWMwLDE3LjU4LTE0LjMxLDMxLjg5LTMxLjg5LDMxLjg5Wk0xMDQuODgsMTA5LjEzaDIxLjk3YzcuNDIsMCwxMy40Ni02LjA0LDEzLjQ2LTEzLjQ2di04LjVjMC03LjQyLTYuMDQtMTMuNDYtMTMuNDYtMTMuNDZoLTEyLjc2Yy01LjA4LDAtOS4yMSw0LjEzLTkuMjEsOS4yMXYyNi4yMloiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBkPSJNMjEwLjgyLDkwLjc2YzE0Ljg1LDAsMjQuMzQsMTAuOSwyNC4zNCwyNC4yNXMtOS40OSwyNC4yNS0yNC4zNCwyNC4yNS0yNC40NC0xMC45LTI0LjQ0LTI0LjI1LDkuNDktMjQuMjUsMjQuNDQtMjQuMjVaTTIxMC44MiwxMzMuMzRjMTEuMzcsMCwxNy4zOS04LjQ2LDE3LjM5LTE4LjMzcy02LjAyLTE4LjMzLTE3LjM5LTE4LjMzLTE3LjQ4LDguNDYtMTcuNDgsMTguMzMsNi4wMSwxOC4zMywxNy40OCwxOC4zM1oiLz4KICAgIDxwYXRoIGQ9Ik0yNDQuMTksOTEuN2g2Ljk2djExLjg0YzMuMjktNy44LDEwLjI1LTEyLjc4LDIwLjQtMTIuNzgsMTMuMDcsMCwyMS45LDkuODcsMjEuOSwyNC4zNHMtOC44MywyNC4xNi0yMS45LDI0LjE2Yy0xMC4zNCwwLTE3LjItNS4xNy0yMC40LTEyLjc4djI4Ljk1aC02Ljk2di02My43M1pNMjY5LjM4LDEzMy4zNGM5LjQsMCwxNy4xMS01LjgzLDE3LjExLTE4LjI0cy03LjcxLTE4LjQyLTE3LjExLTE4LjQyLTE3Ljk1LDYuMTEtMTcuOTUsMTguNDIsOC42NSwxOC4yNCwxNy45NSwxOC4yNFoiLz4KICAgIDxwYXRoIGQ9Ik0zMjIuOTYsOTAuNzZjMTMuMzUsMCwyMi4yOCw4LjM3LDIyLjI4LDIyLjY1djIuODJoLTM3LjVjLjI4LDkuNzgsNS4yNiwxNy4yOSwxNS42LDE3LjI5LDguNTUsMCwxMy41NC00LjUxLDE1LjIzLTExLjQ3aDYuODZjLTEuOTcsOC4yNy03LjYxLDE3LjItMjEuOSwxNy4yLTE1LjEzLDAtMjIuNDYtMTEuMjgtMjIuNDYtMjQuOTEsMC0xNS4wNCw4Ljc0LTIzLjU5LDIxLjktMjMuNTlaTTMzOC4zNywxMTAuNzhjLS42Ni05LjEyLTYuNzctMTQuMjktMTUuNTEtMTQuMjktOC4xOCwwLTE0LjI5LDUuMjYtMTUuMDQsMTQuMjloMzAuNTVaIi8+CiAgICA8cGF0aCBkPSJNMzU1LjAxLDkxLjdoNi45NnYxMi45N2MyLjU0LTguNjUsOS4xMi0xMy45MSwxOS4zNi0xMy45MXMxNi43Myw2Ljc3LDE2LjczLDE4Ljk5djI4LjU3aC03LjA1di0yOC4wMWMwLTkuNjgtMy43Ni0xMy42My0xMi4wMy0xMy42My0xMC41MywwLTE3LjAxLDguODQtMTcuMDEsMjEuMzR2MjAuM2gtNi45NnYtNDYuNjJaIi8+CiAgICA8cGF0aCBkPSJNNDA5LjgxLDcyLjA1aDI0LjM1YzYuODksMCwxMi45Ny44NSwxOC4yNCwyLjU0LDUuMjYsMS42OSw5LjU3LDQuOTgsMTIuOTIsOS44NywzLjM1LDQuODksNS4wMywxMS43OCw1LjAzLDIwLjY4cy0xLjY4LDE1Ljg5LTUuMDMsMjAuNzdjLTMuMzUsNC44OS03LjY2LDguMTgtMTIuOTIsOS44Ny01LjI3LDEuNjktMTEuMzQsMi41NC0xOC4yNCwyLjU0aC0yNC4zNXYtNjYuMjdaTTQzNC4xNiwxMjUuMDdjNC43NiwwLDguNTctLjM4LDExLjQyLTEuMTNzNS4xNy0yLjU1LDYuOTYtNS40MWMxLjc5LTIuODUsMi42OC03LjMyLDIuNjgtMTMuMzlzLS45MS0xMC40Ni0yLjcyLTEzLjM1Yy0xLjgyLTIuODgtNC4xNC00LjctNi45Ni01LjQ1cy02LjYxLTEuMTMtMTEuMzctMS4xM2gtOS4zMXYzOS44Nmg5LjMxWiIvPgogICAgPHBhdGggZD0iTTQ4MC4xNywxMDEuMzNjMi4xLTMuNjcsNS4wMS02LjQ3LDguNzQtOC40MXM4LjAxLTIuOTEsMTIuODMtMi45MWM3LjksMCwxNC4wNywyLjEsMTguNTIsNi4zLDQuNDUsNC4yLDYuNjcsMTAsNi42NywxNy4zOXYzLjk1aC0zNS41M2MuMjUsMy4zOCwxLjMyLDYuMDMsMy4yLDcuOTQsMS44OCwxLjkxLDQuNDUsMi44Nyw3LjcxLDIuODcsMi44MiwwLDUuMTUtLjU5LDctMS43OSwxLjg1LTEuMTksMy4wMi0yLjg4LDMuNTMtNS4wOGgxNC4xOWMtLjc1LDUuMjYtMy4yOCw5LjUzLTcuNTcsMTIuNzgtNC4yOSwzLjI2LTkuOTgsNC44OS0xNy4wNiw0Ljg5LTUuMiwwLTkuNzEtMS4wNS0xMy41NC0zLjE1LTMuODItMi4xLTYuNzUtNS4wMy04Ljc5LTguNzktMi4wNC0zLjc2LTMuMDUtOC4wOC0zLjA1LTEyLjk3czEuMDUtOS4zNSwzLjE1LTEzLjAyWk01MTMuMDIsMTA5LjkzYy0uMjUtMy4wMS0xLjM2LTUuMzMtMy4zNC02Ljk2LTEuOTctMS42My00LjUzLTIuNDQtNy42Ni0yLjQ0cy01LjU2LjgyLTcuNDcsMi40NGMtMS45MSwxLjYzLTIuOTksMy45NS0zLjI0LDYuOTZoMjEuNzFaIi8+CiAgICA8cGF0aCBkPSJNNTM5LjYyLDEzNC42NWMtNC4xNC0zLjA3LTYuMjEtNy41OC02LjIxLTEzLjU0aDE0LjI5YzAsMi43Ljg1LDQuNjksMi41NCw1Ljk3LDEuNjksMS4yOSw0LjI5LDEuOTMsNy44LDEuOTMsMi41NywwLDQuNDMtLjMzLDUuNTktLjk5LDEuMTYtLjY2LDEuNzQtMS43MSwxLjc0LTMuMTUsMC0xLS4zNC0xLjgyLTEuMDMtMi40NC0uNjktLjYzLTEuNzktMS4xNi0zLjI5LTEuNmwtMTQuNDgtMy45NWMtMy4yLS44MS01Ljk1LTIuMjctOC4yNy00LjM3LTIuMzItMi4xLTMuNDgtNS0zLjQ4LTguNywwLTQuNDUsMS44My03Ljg2LDUuNS0xMC4yNSwzLjY3LTIuMzgsOC43OS0zLjU3LDE1LjM3LTMuNTcsNy4yNywwLDEyLjk0LDEuNDYsMTcuMDEsNC4zN3M2LjExLDcuMTMsNi4xMSwxMi42NGgtMTQuMjljMC00LjU3LTIuOTEtNi44Ni04Ljc0LTYuODYtMi4wNywwLTMuNy4zNS00Ljg5LDEuMDMtMS4xOS42OS0xLjc5LDEuNi0xLjc5LDIuNzMsMCwxLjk0LDEuNzIsMy4zNSw1LjE3LDQuMjNsMTEuMDksMi43M2M0LjMyLDEuMDcsNy43OSwyLjcxLDEwLjM5LDQuOTQsMi42LDIuMjIsMy45LDUuMzQsMy45LDkuMzUsMCw0LjU4LTEuODMsOC4wNy01LjUsMTAuNDgtMy42NywyLjQxLTkuMSwzLjYyLTE2LjMxLDMuNjItOC4wMiwwLTE0LjEtMS41NC0xOC4yNC00LjYxWiIvPgogICAgPHBhdGggZD0iTTU4Ny41Niw2OS4yM2gxNC4yOXY0MC4wNGwxOC44OS0xOC4zM2gxNy40OGwtMjMuNTksMjMuMDMsMjMuNSwyNC4zNWgtMTcuMzlsLTE4Ljg5LTE5LjkzdjE5LjkzaC0xNC4yOXYtNjkuMDlaIi8+CiAgPC9nPgo8L3N2Zz4=
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-nextcloud-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
17f7a005ac01ada220723048c5b1f5b7fbd20eba.b64: iVBORw0KGgoAAAANSUhEUgAAAG8AAABvCAYAAADixZ5gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASWSURBVHgB7Z0/aBtXHMe/J3dKIHUGd2kDlw4dQocMGQIdfFoypENToqFQiOV2KrRQD10b1K1DccdCh8aTKfXglHQoLfgCDU0pbg0FN2TJETvx4CH/SCCE6PL7SWchOZIl+3RP99N9P/DzO8snC+mj3+/de+908pCSOI4npQkktPVB+hElseZ53n2kwMMBEGGBNO9JnAOFpSGSCCUWRGSIfbIveSKtKs0MmplGhkskUROJlwa9w0Dykky7CEpzQSRRFolRvx1L/XYQcSptBRTnCl/iVvK670nPzEsOROYlqiCjYllitteBTVd5iTjNtpMgo2YNzTL6ksBeZfMHUFxeUA/z3f7wkryk1p4DyRPVbn1gR9mUHXxpboHklXL7eHB35q2A5JmO7GvJSwbgPkieCRJPDVplU27UcumD5J1QSmdZNxqZl8yg+CAWCBJfrbI5A2KJxmigUTZZMs0RSek87iWzKfdArHFUyyZnUmwSqDwfxCKTlGcXv+96HskvlGcYyjPMKxgBjx48xeofm9jaeNTY3g/Bu2/irbenQBzL27r9ELVPf8fqtU0clH/kvt/9fB7EYdm8svg/PgwWU4lTVq/dSf0/xgUn8m7+ty0Z99u+S2Qvvv/6LxBH8r648AuGCbOvSebyriyu4670dcOG2edE3g1kAbPPgbytjeFn3Q5Fzz7Tg/SiZ5/5GZYiZ595eUXOvrGY2yxq9o2FvKJmX+Zzm5f/rYJkA5eEDEN5hqE8w1CeYSjPMJRnmMyHCtubMcaZqTcOdBGpoZC5vK8+eI7tjfEVePiIh1NnPFTmJkQknMKymZLHD2NcXarjs3eeYWn+OVxCeUNk6du6U4GUN2RU4Pr1OlxAeRmwNE95Zlm/Hjs5yqa8jFj/k/LIHlCeYSjPMJRnGMozDOUZhvIMQ3mGoTzDUJ5hKM8wlGcYyjMM5RmG8gxDeYahPMNQnmEozzCUZxjKMwzlGYbyDEN5hqE8w2Qub+p1FJKpY8iczOWdOF285D58xM3zzvwRzn5cajyZInHqjJs3bOaPckjEnZ+bQFHQz6hX5sZEnnL2o5LE+AtUcV/+OOHsIgPOvhTjwsUSDr0KXP2pPpZXiDhx2sMn30w4vTqE0280qXxewnTFa3z48O9f63iS3eWnnaBdwmvHvEYfp/Jc4/y7hPSdqQKnKxxipoWvoGEozzCUZxjKMwzlGYbyDEN5hqE8w6i8CMQikcq7D2KRyIvjeFI27oFY42jJ8zzNvAjEEpF62zlguQxiiVB/7MhbBrHEgv5oLUJJ37ciTQCSd7RkHteN9nHeAogFajsbHcu/zL7c08o6ZfcMSw0kz5Tbf+mQJ1ZDUGBeqYmfqP2GrmfNSPm8JM0MSF5YFnHv776xlzydddH+7yTIqFmTKCeTKR10XVVIdtT6yvHfaNERQFdxSs8lIb1DkqrsA0eD9nHVXuKUgc4UlTLqo1lGfZCsCdEUF/bbcaDFWD3KScYXs+AkdlaEErPyOpcHEacc6BxtycRAmqrENJiNaYjQXBRYHlRYO6lPsE+OTPWo1AdFDkKE5gJ4uFd/NggvAPEyPHpVADmrAAAAAElFTkSuQmCC
778ebecebb8b69848f38b3342d29d3ac755d2521.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//2qwP/7ZIv/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//yAoP/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Omz/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yctf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1eB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8nLX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYv/7c5b//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/+PDzP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/rE5n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/48PM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+sTmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xOZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+zXHP/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/+PDzP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VprL/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/rE5n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nzBO/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/48PM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6tLY/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+sTmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x4eX/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xOZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jw8v/jxM3/z5im/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/+rS2P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-notes-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
3050e4c60897d1be2a1c7cd21152dd2d546a49b0.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VprL/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9uMr/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8nLX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7c5b//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8j6v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////24yv/6O2z/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bnL//tzlv/7V4H/+1eB//tzlv/9ucv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-openproject-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
1116991e86385dc68a295b155053cb5c731f644d.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo=
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-openxchange-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
a80c151fa3c27057eb4276e4b0e42e4243d3e232.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+6aoD/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv/Ol6b/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////q0tj/ni9N/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/lyBA/86Xpv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+XIED/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6aoD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8eHl/5cgQP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/zpem/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s1xz/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/lyBA//jw8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ctL//kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7Ncc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/9Wmsv/////////////////q0tj/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/6tLY////////////////////////////+PDy/7prgP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7prgP/48PL////////////////////////////////////////////VprL/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+YIUH/1aay////////////////////////////////////////////////////////////6tLY/6Y/Wv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6Y/Wv/q0tj///////////////////////////////////////////////////////////////////////jw8v+6a4D/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/umuA//jw8v//////////////////////////////////////////////////////////////////////////////////////1aay/5ghQf+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ghQf/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////+rS2P+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/+rS2P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/////////////////////////////////////////////////////////////cbV//7w9P///////////////////////////////////////////////////////////9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/9Wmsv////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//pIdv/+1N/////////////////////////////////////////////////////////////q0tj/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/6tLY/////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6LGH//arA////////////////////////////////////////////////////////////+PDy/7prgP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7prgP/48PL////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT////////////////////////////////////////////////////////////VprL/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+YIUH/1aay/////////////////////////////////////////////////////////////vD0//tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//tTf////////////////////////////////////////////////////////////6tLY/6Y/Wv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6Y/Wv/q0tj////////////////////////////////////////////////////////////+1N//+kh2//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh//2qwP////////////////////////////////////////////////////////////jw8v+6a4D/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/umuA//jw8v////////////////////////////////////////////////////////////2qwP/6LGH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//vD0////////////////////////////////////////////////////////////1aay/5ghQf+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ghQf/VprL////////////////////////////////////////////////////////////+8PT/+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7U3////////////////////////////////////////////////////////////+rS2P+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/+rS2P////////////////////////////////////////////////////////////7U3//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD////////////////////////////////////////////////////////////48PL/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/////////////////////////////////////////////////////////////arA//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW//7w9P///////////////////////////////////////////////////////////9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/mCFB/9Wmsv////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv/+1N/////////////////////////////////////////////////////////////q0tj/pj9a/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+mP1r/6tLY/////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH//arA////////////////////////////////////////////////////////////+PDy/7prgP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/7prgP/48PL////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT////////////////////////////////////////////////////////////VprL/mCFB/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ol6b/1aay/////////////////////////////////////////////////////////////vD0//tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//tTf////////////////////////////////////////////////////////////6tLY/8F5jP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1N//+kh2//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6LGH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1N//+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//ydtv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2rwP/7c5b/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/8nbb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=
070273f978a249ae8a3ab5196d22d18dae244b05.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTUuNjcxIDU1LjVMODQuMjEzNiAzNC4wOTMxQzgyLjgzOTIgMzIuODcyNiA4MS4wMzYgMzIuMTI1IDc5LjA0NiAzMi4xMjVIMzIuMjk2QzMwLjMxNjkgMzIuMTI1IDI4LjUwMjggMzIuODcyNiAyNy4xMjg0IDM0LjA5MzFMNTUuNjcxIDU1LjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Mi4xNjg5IDYwLjM3MDdMNTUuNjcwOSA2NS4yNDE0TDQ5LjE3MyA2MC4zNzA3TDI0LjUwMDYgNDEuODY2NFY3MS4wNzk2QzI0LjUwMDYgNzUuMzc4NiAyNy45ODYgNzguODc0OSAzMi4yOTU5IDc4Ljg3NDlINzkuMDQ1OUM4My4zNDQ5IDc4Ljg3NDkgODYuODQxMyA3NS4zODk2IDg2Ljg0MTMgNzEuMDc5NlY0MS44NjY0TDYyLjE2ODkgNjAuMzcwN1oiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg==
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-portal-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=
e7f9d1ad04d1efe6154644a19056586e13a734b7.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
cdea6e921a3ea56e326074499de783647258c796.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4=
3c57131cb5aba5437f541c362619f0d2d924fb78.b64: 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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9k=
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-xwiki-assets"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
5ad21d258634828e615c1fa334356fd0ae2bac5c.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjcuMTg3NSA3NS4wMzAyQzY3LjE4NzUgODEuNDg0MiA2MS45NTQgODYuNzE3NyA1NS41IDg2LjcxNzdDNDkuMDQ2IDg2LjcxNzcgNDMuODEyNSA4MS40ODQyIDQzLjgxMjUgNzUuMDMwMlY3MS4xMzgxSDY3LjE4NzVWNzUuMDMwMloiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTU1LjUgMjQuMzc3MkM0Mi41OTIxIDI0LjM3NzIgMzIuMTI1IDM0Ljg0NDMgMzIuMTI1IDQ3Ljc1MjJDMzIuMTI1IDUzLjc0NDQgMzQuNDAwOSA1OS4xOTc4IDM4LjExNzIgNjMuMzMxOUg3Mi44ODI4Qzc2LjU5OTEgNTkuMTk3OCA3OC44NzUgNTMuNzQ0NCA3OC44NzUgNDcuNzUyMkM3OC44NzUgMzQuODQ0MyA2OC40MDc5IDI0LjM3NzIgNTUuNSAyNC4zNzcyWiIgZmlsbD0iIzU3MUVGQSIvPgo8L3N2Zz4K
b7b42874d0e274093e028cacac11373e1fb9b60c.b64: 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
...
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-entrypoint"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
entrypoint.sh: |
#!/bin/sh
cd /mnt/assets
cat /cm/element/fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.b64 | base64 -d > fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.ico
cat /cm/jitsi/b3ea2c80d902061a870360ef1c69dead0b0abff7.b64 | base64 -d > b3ea2c80d902061a870360ef1c69dead0b0abff7.svg
cat /cm/keycloak/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64 | base64 -d > a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico
cat /cm/keycloak/f26f33840612e492ead45fc5e75896de016f48b7.b64 | base64 -d > f26f33840612e492ead45fc5e75896de016f48b7.svg
cat /cm/nextcloud/17f7a005ac01ada220723048c5b1f5b7fbd20eba.b64 | base64 -d > 17f7a005ac01ada220723048c5b1f5b7fbd20eba.png
cat /cm/nextcloud/778ebecebb8b69848f38b3342d29d3ac755d2521.b64 | base64 -d > 778ebecebb8b69848f38b3342d29d3ac755d2521.ico
cat /cm/notes/3050e4c60897d1be2a1c7cd21152dd2d546a49b0.b64 | base64 -d > 3050e4c60897d1be2a1c7cd21152dd2d546a49b0.ico
cat /cm/openproject/1116991e86385dc68a295b155053cb5c731f644d.b64 | base64 -d > 1116991e86385dc68a295b155053cb5c731f644d.svg
cat /cm/openxchange/a80c151fa3c27057eb4276e4b0e42e4243d3e232.b64 | base64 -d > a80c151fa3c27057eb4276e4b0e42e4243d3e232.ico
cat /cm/openxchange/070273f978a249ae8a3ab5196d22d18dae244b05.b64 | base64 -d > 070273f978a249ae8a3ab5196d22d18dae244b05.svg
cat /cm/portal/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64 | base64 -d > a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico
cat /cm/portal/e7f9d1ad04d1efe6154644a19056586e13a734b7.b64 | base64 -d > e7f9d1ad04d1efe6154644a19056586e13a734b7.svg
cat /cm/portal/cdea6e921a3ea56e326074499de783647258c796.b64 | base64 -d > cdea6e921a3ea56e326074499de783647258c796.svg
cat /cm/portal/3c57131cb5aba5437f541c362619f0d2d924fb78.b64 | base64 -d > 3c57131cb5aba5437f541c362619f0d2d924fb78.jpg
cat /cm/xwiki/5ad21d258634828e615c1fa334356fd0ae2bac5c.b64 | base64 -d > 5ad21d258634828e615c1fa334356fd0ae2bac5c.svg
cat /cm/xwiki/b7b42874d0e274093e028cacac11373e1fb9b60c.b64 | base64 -d > b7b42874d0e274093e028cacac11373e1fb9b60c.png
---
# Source: opendesk-static-files/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-static-files-nginx"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
data:
nginx.conf: |-
worker_processes auto;
error_log stderr warn;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
server_names_hash_bucket_size 128;
# Health-Endpoint
server {
listen 8080;
location = /health {
access_log off;
allow all;
default_type 'application/json';
return 200 '{"status": "ok"}';
}
}
# assets-Endpoints
server {
listen 8081;
server_name chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/vector-icons/favicon.........ico$ {
alias /mnt/assets/fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.ico;
}
}
server {
listen 8081;
server_name meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/images/favicon.svg$ {
alias /mnt/assets/b3ea2c80d902061a870360ef1c69dead0b0abff7.svg;
}
}
server {
listen 8081;
server_name id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/resources/...../login/UCS/img/favicon.ico$ {
alias /mnt/assets/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico;
}
location ~ ^/static-files/login/logo.svg$ {
alias /mnt/assets/f26f33840612e492ead45fc5e75896de016f48b7.svg;
}
}
server {
listen 8081;
server_name files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/core/img/favicon-touch.png$ {
alias /mnt/assets/17f7a005ac01ada220723048c5b1f5b7fbd20eba.png;
}
location ~ ^/core/img/favicon.ico$ {
alias /mnt/assets/778ebecebb8b69848f38b3342d29d3ac755d2521.ico;
}
}
server {
listen 8081;
server_name notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/favicon.ico$ {
alias /mnt/assets/3050e4c60897d1be2a1c7cd21152dd2d546a49b0.ico;
}
}
server {
listen 8081;
server_name projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/custom_style/........../favicon/favicon.svg$ {
alias /mnt/assets/1116991e86385dc68a295b155053cb5c731f644d.svg;
}
}
server {
listen 8081;
server_name webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/appsuite/favicon.ico$ {
alias /mnt/assets/a80c151fa3c27057eb4276e4b0e42e4243d3e232.ico;
}
location ~ ^/appsuite/favicon.svg$ {
alias /mnt/assets/070273f978a249ae8a3ab5196d22d18dae244b05.svg;
}
}
server {
listen 8081;
server_name portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/favicon.ico$ {
alias /mnt/assets/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico;
}
location ~ ^/static-files/portal/background.svg$ {
alias /mnt/assets/e7f9d1ad04d1efe6154644a19056586e13a734b7.svg;
}
location ~ ^/static-files/portal/waiting-spinner.svg$ {
alias /mnt/assets/cdea6e921a3ea56e326074499de783647258c796.svg;
}
location ~ ^/static-files/login/background.jpg$ {
alias /mnt/assets/3c57131cb5aba5437f541c362619f0d2d924fb78.jpg;
}
}
server {
listen 8081;
server_name wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de;
location ~ ^/resources/icons/xwiki/favicon.svg$ {
alias /mnt/assets/5ad21d258634828e615c1fa334356fd0ae2bac5c.svg;
}
location ~ ^/resources/icons/xwiki/favicon16.png$ {
alias /mnt/assets/b7b42874d0e274093e028cacac11373e1fb9b60c.png;
}
}
}
...
---
# Source: opendesk-static-files/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-static-files"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "assets"
port: 8081
targetPort: "assets"
protocol: "TCP"
- name: "status"
port: 8080
targetPort: "status"
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-static-files
app.kubernetes.io/instance: opendesk-static-files
...
---
# Source: opendesk-static-files/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: "opendesk-static-files"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: opendesk-static-files
app.kubernetes.io/instance: opendesk-static-files
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 05dcf3ad549e7a7c30fac3a8eb771c9c7188255ba8fc2fa9c0b29b55c5b14f82
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: opendesk-static-files
initContainers:
- name: "init"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4"
command:
- "/bin/sh"
- "-c"
- "/entrypoint.sh"
imagePullPolicy: IfNotPresent
env:
resources:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 0.01
memory: 16Mi
volumeMounts:
- name: "element-assets"
mountPath: "/cm/element"
- name: "jitsi-assets"
mountPath: "/cm/jitsi"
- name: "keycloak-assets"
mountPath: "/cm/keycloak"
- name: "nextcloud-assets"
mountPath: "/cm/nextcloud"
- name: "notes-assets"
mountPath: "/cm/notes"
- name: "openproject-assets"
mountPath: "/cm/openproject"
- name: "openxchange-assets"
mountPath: "/cm/openxchange"
- name: "portal-assets"
mountPath: "/cm/portal"
- name: "xwiki-assets"
mountPath: "/cm/xwiki"
- name: "assets"
mountPath: "/mnt/assets"
readOnly: false
- name: "entrypoint"
mountPath: "/entrypoint.sh"
subPath: "entrypoint.sh"
containers:
- name: "nginx"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4"
imagePullPolicy: IfNotPresent
env:
livenessProbe:
httpGet:
path: "/health"
port: 8080
httpHeaders:
- name: "Host"
value: "localhost"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 2
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: "/health"
port: 8080
httpHeaders:
- name: "Host"
value: "localhost"
initialDelaySeconds: 1
periodSeconds: 1
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
startupProbe:
httpGet:
path: "/health"
port: 8080
httpHeaders:
- name: "Host"
value: "localhost"
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: assets
containerPort: 8081
protocol: TCP
- name: status
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 0.01
memory: 16Mi
volumeMounts:
- name: "config"
mountPath: "/etc/nginx/nginx.conf"
subPath: "nginx.conf"
- name: "cache"
mountPath: "/var/cache/nginx/"
- name: "run"
mountPath: "/var/run/"
- name: "tmp"
mountPath: "/tmp"
- name: "assets"
mountPath: "/mnt/assets"
readOnly: true
volumes:
- name: "element-assets"
configMap:
name: "opendesk-static-files-element-assets"
- name: "jitsi-assets"
configMap:
name: "opendesk-static-files-jitsi-assets"
- name: "keycloak-assets"
configMap:
name: "opendesk-static-files-keycloak-assets"
- name: "nextcloud-assets"
configMap:
name: "opendesk-static-files-nextcloud-assets"
- name: "notes-assets"
configMap:
name: "opendesk-static-files-notes-assets"
- name: "openproject-assets"
configMap:
name: "opendesk-static-files-openproject-assets"
- name: "openxchange-assets"
configMap:
name: "opendesk-static-files-openxchange-assets"
- name: "portal-assets"
configMap:
name: "opendesk-static-files-portal-assets"
- name: "xwiki-assets"
configMap:
name: "opendesk-static-files-xwiki-assets"
- name: "config"
configMap:
name: "opendesk-static-files-nginx"
- name: "entrypoint"
configMap:
name: "opendesk-static-files-entrypoint"
items:
- key: "entrypoint.sh"
path: "entrypoint.sh"
defaultMode: 0755
- name: "cache"
emptyDir: {}
- name: "run"
emptyDir: {}
- name: "tmp"
emptyDir: {}
- name: "assets"
emptyDir: {}
...
---
# Source: opendesk-static-files/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-static-files"
labels:
app.kubernetes.io/name: opendesk-static-files
helm.sh/chart: opendesk-static-files-4.0.1
app.kubernetes.io/instance: opendesk-static-files
app.kubernetes.io/managed-by: Helm
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/session-cookie-path: "/"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /vector-icons/favicon.........ico
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /images/favicon.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /resources/...../login/UCS/img/favicon.ico
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /static-files/login/logo.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /core/img/favicon-touch.png
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /core/img/favicon.ico
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /favicon.ico
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /custom_style/........../favicon/favicon.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /appsuite/favicon.ico
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /appsuite/favicon.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /favicon.ico
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /static-files/portal/background.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /static-files/portal/waiting-spinner.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /static-files/login/background.jpg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- host: "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /resources/icons/xwiki/favicon.svg
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
- path: /resources/icons/xwiki/favicon16.png
pathType: "Exact"
backend:
service:
name: opendesk-static-files
port:
name: assets
...
---
# Source: redis/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
automountServiceAccountToken: true
metadata:
name: redis
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
---
# Source: redis/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: redis
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
type: Opaque
data:
redis-password: "MDdjNTI0ZjBkM2Y5NWI0ZDAzZmVhNTRlYTEwY2ZiODQ4YmRiMzU1ZQ=="
---
# Source: redis/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-configuration
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
data:
redis.conf: |-
# User-supplied common configuration:
# Enable AOF https://redis.io/topics/persistence#append-only-file
appendonly yes
# Disable RDB persistence, AOF persistence already enabled.
save ""
# End of common configuration
master.conf: |-
dir /data
# User-supplied master configuration:
rename-command FLUSHDB ""
rename-command FLUSHALL ""
# End of master configuration
replica.conf: |-
dir /data
# User-supplied replica configuration:
rename-command FLUSHDB ""
rename-command FLUSHALL ""
# End of replica configuration
---
# Source: redis/templates/health-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-health
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
data:
ping_readiness_local.sh: |-
#!/bin/bash
[[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")"
[[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD"
response=$(
timeout -s 15 $1 \
redis-cli \
-h localhost \
-p $REDIS_PORT \
ping
)
if [ "$?" -eq "124" ]; then
echo "Timed out"
exit 1
fi
if [ "$response" != "PONG" ]; then
echo "$response"
exit 1
fi
ping_liveness_local.sh: |-
#!/bin/bash
[[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")"
[[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD"
response=$(
timeout -s 15 $1 \
redis-cli \
-h localhost \
-p $REDIS_PORT \
ping
)
if [ "$?" -eq "124" ]; then
echo "Timed out"
exit 1
fi
responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}')
if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ] && [ "$responseFirstWord" != "MASTERDOWN" ]; then
echo "$response"
exit 1
fi
ping_readiness_master.sh: |-
#!/bin/bash
[[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")"
[[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
response=$(
timeout -s 15 $1 \
redis-cli \
-h $REDIS_MASTER_HOST \
-p $REDIS_MASTER_PORT_NUMBER \
ping
)
if [ "$?" -eq "124" ]; then
echo "Timed out"
exit 1
fi
if [ "$response" != "PONG" ]; then
echo "$response"
exit 1
fi
ping_liveness_master.sh: |-
#!/bin/bash
[[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")"
[[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
response=$(
timeout -s 15 $1 \
redis-cli \
-h $REDIS_MASTER_HOST \
-p $REDIS_MASTER_PORT_NUMBER \
ping
)
if [ "$?" -eq "124" ]; then
echo "Timed out"
exit 1
fi
responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}')
if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ]; then
echo "$response"
exit 1
fi
ping_readiness_local_and_master.sh: |-
script_dir="$(dirname "$0")"
exit_status=0
"$script_dir/ping_readiness_local.sh" $1 || exit_status=$?
"$script_dir/ping_readiness_master.sh" $1 || exit_status=$?
exit $exit_status
ping_liveness_local_and_master.sh: |-
script_dir="$(dirname "$0")"
exit_status=0
"$script_dir/ping_liveness_local.sh" $1 || exit_status=$?
"$script_dir/ping_liveness_master.sh" $1 || exit_status=$?
exit $exit_status
---
# Source: redis/templates/scripts-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
data:
start-master.sh: |
#!/bin/bash
[[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")"
if [[ -f /opt/bitnami/redis/mounted-etc/master.conf ]];then
cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf
fi
if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then
cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf
fi
ARGS=("--port" "${REDIS_PORT}")
ARGS+=("--requirepass" "${REDIS_PASSWORD}")
ARGS+=("--masterauth" "${REDIS_PASSWORD}")
ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf")
ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf")
exec redis-server "${ARGS[@]}"
---
# Source: redis/templates/headless-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-headless
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
annotations:
spec:
type: ClusterIP
clusterIP: None
ports:
- name: tcp-redis
port: 6379
targetPort: redis
selector:
app.kubernetes.io/instance: redis
app.kubernetes.io/name: redis
---
# Source: redis/templates/master/service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
app.kubernetes.io/component: master
spec:
type: ClusterIP
internalTrafficPolicy: Cluster
sessionAffinity: None
ports:
- name: tcp-redis
port: 6379
targetPort: redis
nodePort: null
selector:
app.kubernetes.io/instance: redis
app.kubernetes.io/name: redis
app.kubernetes.io/component: master
---
# Source: redis/templates/master/application.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-master
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
app.kubernetes.io/component: master
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: redis
app.kubernetes.io/name: redis
app.kubernetes.io/component: master
serviceName: redis-headless
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis
app.kubernetes.io/version: 7.2.3
helm.sh/chart: redis-18.6.1
app.kubernetes.io/component: master
annotations:
checksum/configmap: 86bcc953bb473748a3d3dc60b7c11f34e60c93519234d4c37f42e22ada559d47
checksum/health: aff24913d801436ea469d8d374b2ddb3ec4c43ee7ab24663d5f8ff1a1b6991a9
checksum/scripts: 560c33ff34d845009b51830c332aa05fa211444d1877d3526d3599be7543aaa5
checksum/secret: ab6bcf8974601f2d1c9598fc3f77f21fe3df4848bb3f714847f3f85935fd7822
spec:
securityContext:
fsGroup: 1001
serviceAccountName: redis
automountServiceAccountToken: true
affinity:
podAffinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/instance: redis
app.kubernetes.io/name: redis
app.kubernetes.io/component: master
topologyKey: kubernetes.io/hostname
weight: 1
nodeAffinity:
enableServiceLinks: true
terminationGracePeriodSeconds: 30
containers:
- name: redis
image: registry-1.docker.io/bitnami/redis:7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command:
- /bin/bash
args:
- -c
- /opt/bitnami/scripts/start-scripts/start-master.sh
env:
- name: BITNAMI_DEBUG
value: "false"
- name: REDIS_REPLICATION_MODE
value: master
- name: ALLOW_EMPTY_PASSWORD
value: "no"
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis
key: redis-password
- name: REDIS_TLS_ENABLED
value: "no"
- name: REDIS_PORT
value: "6379"
ports:
- name: redis
containerPort: 6379
livenessProbe:
initialDelaySeconds: 20
periodSeconds: 5
# One second longer than command timeout should prevent generation of zombie processes.
timeoutSeconds: 6
successThreshold: 1
failureThreshold: 5
exec:
command:
- sh
- -c
- /health/ping_liveness_local.sh 5
readinessProbe:
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 2
successThreshold: 1
failureThreshold: 5
exec:
command:
- sh
- -c
- /health/ping_readiness_local.sh 1
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: start-scripts
mountPath: /opt/bitnami/scripts/start-scripts
- name: health
mountPath: /health
- name: redis-data
mountPath: /data
- name: config
mountPath: /opt/bitnami/redis/mounted-etc
- name: redis-tmp-conf
mountPath: /opt/bitnami/redis/etc/
- name: tmp
mountPath: /tmp
volumes:
- name: start-scripts
configMap:
name: redis-scripts
defaultMode: 0755
- name: health
configMap:
name: redis-health
defaultMode: 0755
- name: config
configMap:
name: redis-configuration
- name: redis-tmp-conf
emptyDir: {}
- name: tmp
emptyDir: {}
volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data
labels:
app.kubernetes.io/instance: redis
app.kubernetes.io/name: redis
app.kubernetes.io/component: master
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
---
# Source: memcached/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
automountServiceAccountToken: true
metadata:
name: memcached
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: memcached
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: memcached
app.kubernetes.io/version: 1.6.22
helm.sh/chart: memcached-6.7.1
---
# Source: memcached/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: memcached
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: memcached
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: memcached
app.kubernetes.io/version: 1.6.22
helm.sh/chart: memcached-6.7.1
spec:
type: ClusterIP
ports:
- name: memcache
port: 11211
targetPort: memcache
nodePort: null
selector:
app.kubernetes.io/instance: memcached
app.kubernetes.io/name: memcached
---
# Source: memcached/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: memcached
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: memcached
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: memcached
app.kubernetes.io/version: 1.6.22
helm.sh/chart: memcached-6.7.1
spec:
selector:
matchLabels:
app.kubernetes.io/instance: memcached
app.kubernetes.io/name: memcached
replicas: 1
strategy:
rollingUpdate: {}
type: RollingUpdate
template:
metadata:
labels:
app.kubernetes.io/instance: memcached
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: memcached
app.kubernetes.io/version: 1.6.22
helm.sh/chart: memcached-6.7.1
annotations:
spec:
affinity:
podAffinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/instance: memcached
app.kubernetes.io/name: memcached
topologyKey: kubernetes.io/hostname
weight: 1
nodeAffinity:
securityContext:
fsGroup: 1001
serviceAccountName: memcached
containers:
- name: memcached
image: registry-1.docker.io/bitnami/memcached:1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
env:
- name: BITNAMI_DEBUG
value: "false"
- name: MEMCACHED_PORT_NUMBER
value: "11211"
ports:
- name: memcache
containerPort: 11211
livenessProbe:
failureThreshold: 6
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
tcpSocket:
port: memcache
readinessProbe:
failureThreshold: 6
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 3
tcpSocket:
port: memcache
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: postgresql/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "postgresql"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: postgresql/templates/secret-job.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "postgresql-job"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
stringData:
init-wait.sh: |
RETRIES=60
until psql -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq "0" ]; do
echo "Waiting 5s for postgres server, $((RETRIES--)) remaining attempts..."
sleep 5
done
if [ ${RETRIES} -eq "0" ]; then
echo "Maximum wait attempts exceeded, aborting".
exit 1;
fi
init-user.sh: |
CURRENT_MAX_CONNECTIONS=$(psql -t -c "SHOW max_connections;" | xargs)
echo "Current set max_connections ($CURRENT_MAX_CONNECTIONS)."
echo "Working on keycloak_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'keycloak_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"keycloak_user\" WITH ENCRYPTED PASSWORD '2a27e8e8f1148830c04a97d765173021337b738e' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"keycloak_user\" WITH ENCRYPTED PASSWORD '2a27e8e8f1148830c04a97d765173021337b738e' CONNECTION LIMIT 100";
fi
echo "Working on notes_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'notes_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"notes_user\" WITH ENCRYPTED PASSWORD 'be74d99779cd9ad3426c25b026e0bec0784f7aff' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"notes_user\" WITH ENCRYPTED PASSWORD 'be74d99779cd9ad3426c25b026e0bec0784f7aff' CONNECTION LIMIT 100";
fi
echo "Working on openproject_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'openproject_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"openproject_user\" WITH ENCRYPTED PASSWORD '0b4d7caf9005abcc8df53519620dd00619de27f8' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"openproject_user\" WITH ENCRYPTED PASSWORD '0b4d7caf9005abcc8df53519620dd00619de27f8' CONNECTION LIMIT 100";
fi
echo "Working on keycloak_extensions_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'keycloak_extensions_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"keycloak_extensions_user\" WITH ENCRYPTED PASSWORD 'a7125d58b42fc935fd603c362ddecbfafd92bca0' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"keycloak_extensions_user\" WITH ENCRYPTED PASSWORD 'a7125d58b42fc935fd603c362ddecbfafd92bca0' CONNECTION LIMIT 100";
fi
echo "Working on matrix_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'matrix_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"matrix_user\" WITH ENCRYPTED PASSWORD '5cd0a266029154912dd660f748137982a924e6f5' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"matrix_user\" WITH ENCRYPTED PASSWORD '5cd0a266029154912dd660f748137982a924e6f5' CONNECTION LIMIT 100";
fi
echo "Working on notificationsapi_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'notificationsapi_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"notificationsapi_user\" WITH ENCRYPTED PASSWORD 'd1f34090031fd52de9518c2665090822a0d1e17b' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"notificationsapi_user\" WITH ENCRYPTED PASSWORD 'd1f34090031fd52de9518c2665090822a0d1e17b' CONNECTION LIMIT 100";
fi
echo "Working on guardianmanagementapi_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'guardianmanagementapi_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"guardianmanagementapi_user\" WITH ENCRYPTED PASSWORD '37b03322fc23defff213fe18e95448bd27f92652' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"guardianmanagementapi_user\" WITH ENCRYPTED PASSWORD '37b03322fc23defff213fe18e95448bd27f92652' CONNECTION LIMIT 100";
fi
echo "Working on selfservice_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'selfservice_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"selfservice_user\" WITH ENCRYPTED PASSWORD '09af664fe11f675880a6dc980f0276f70d001104' CONNECTION LIMIT 10";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"selfservice_user\" WITH ENCRYPTED PASSWORD '09af664fe11f675880a6dc980f0276f70d001104' CONNECTION LIMIT 10";
fi
echo "Working on nextcloud_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'nextcloud_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"nextcloud_user\" WITH ENCRYPTED PASSWORD '0c6b73606d239fe1aba0b3f28ada476e3a58fa2f' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"nextcloud_user\" WITH ENCRYPTED PASSWORD '0c6b73606d239fe1aba0b3f28ada476e3a58fa2f' CONNECTION LIMIT 100";
fi
echo "Working on xwiki_user..."
if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'xwiki_user'" | grep -q 1; then
echo "User already exists, updating."
psql -c "ALTER USER \"xwiki_user\" WITH ENCRYPTED PASSWORD 'cf03170636d1fa89617370fe51aefc470221ae28' CONNECTION LIMIT 100";
else
echo "User does not exist, creating."
psql -c "CREATE USER \"xwiki_user\" WITH ENCRYPTED PASSWORD 'cf03170636d1fa89617370fe51aefc470221ae28' CONNECTION LIMIT 100";
fi
echo "Final required max_connections: 925"
if [[ "$CURRENT_MAX_CONNECTIONS" -ne "925" ]]; then
echo "Updating required limits from current $CURRENT_MAX_CONNECTIONS to 925"
psql -c "ALTER SYSTEM SET MAX_CONNECTIONS = 925";
# echo "Restarting the postgres Service."
# pg_ctl restart
fi
init-db.sh: |
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'keycloak'" | grep -q 1 || psql -c "CREATE DATABASE keycloak ";
psql -c "ALTER DATABASE keycloak OWNER TO keycloak_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'keycloak_extensions'" | grep -q 1 || psql -c "CREATE DATABASE keycloak_extensions ";
psql -c "ALTER DATABASE keycloak_extensions OWNER TO keycloak_extensions_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE keycloak_extensions TO keycloak_extensions_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'notes'" | grep -q 1 || psql -c "CREATE DATABASE notes ";
psql -c "ALTER DATABASE notes OWNER TO notes_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE notes TO notes_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'openproject'" | grep -q 1 || psql -c "CREATE DATABASE openproject ";
psql -c "ALTER DATABASE openproject OWNER TO openproject_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE openproject TO openproject_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'matrix'" | grep -q 1 || psql -c "CREATE DATABASE matrix ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 ";
psql -c "ALTER DATABASE matrix OWNER TO matrix_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE matrix TO matrix_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'guardianmanagementapi'" | grep -q 1 || psql -c "CREATE DATABASE guardianmanagementapi ";
psql -c "ALTER DATABASE guardianmanagementapi OWNER TO guardianmanagementapi_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE guardianmanagementapi TO guardianmanagementapi_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'notificationsapi'" | grep -q 1 || psql -c "CREATE DATABASE notificationsapi ";
psql -c "ALTER DATABASE notificationsapi OWNER TO notificationsapi_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE notificationsapi TO notificationsapi_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'selfservice'" | grep -q 1 || psql -c "CREATE DATABASE selfservice ";
psql -c "ALTER DATABASE selfservice OWNER TO selfservice_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE selfservice TO selfservice_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'nextcloud'" | grep -q 1 || psql -c "CREATE DATABASE nextcloud ";
psql -c "ALTER DATABASE nextcloud OWNER TO nextcloud_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud_user";
psql -tc "SELECT 1 FROM pg_database WHERE datname = 'xwiki'" | grep -q 1 || psql -c "CREATE DATABASE xwiki ENCODING 'UNICODE' template=template0 ";
psql -c "ALTER DATABASE xwiki OWNER TO xwiki_user";
psql -c "GRANT ALL PRIVILEGES ON DATABASE xwiki TO xwiki_user";
...
---
# Source: postgresql/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postgresql"
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
data:
...
---
# Source: postgresql/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "postgresql"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "postgresql"
port: 5432
targetPort: postgresql
protocol: "TCP"
selector:
app.kubernetes.io/name: postgresql
app.kubernetes.io/instance: postgresql
...
---
# Source: postgresql/templates/statefulset.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: postgresql
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
serviceName: postgresql
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: postgresql
app.kubernetes.io/instance: postgresql
template:
metadata:
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: postgresql
terminationGracePeriodSeconds: 120
hostNetwork: false
hostIPC: false
containers:
- name: "postgresql"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b"
imagePullPolicy: IfNotPresent
env:
- name: "POSTGRES_PASSWORD"
value: "e5c38aa93bd3191b54a288db3e820c103ebb52e0"
- name: "POSTGRES_USER"
value: "postgres"
- name: "PGPORT"
value: "5432"
- name: "PGDATA"
value: "/mnt/postgresql/data"
ports:
- name: postgresql
containerPort: 5432
protocol: TCP
startupProbe:
failureThreshold: 15
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
exec:
command:
- /bin/sh
- -c
- exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
livenessProbe:
failureThreshold: 6
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
exec:
command:
- /bin/sh
- -c
- exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
readinessProbe:
failureThreshold: 6
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
exec:
command:
- /bin/sh
- -c
- exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
- name: "var-run-postgresql"
mountPath: "/var/run/postgresql"
- name: "data"
mountPath: "/mnt/postgresql"
volumes:
- name: "tmp"
emptyDir: {}
- name: "var-run-postgresql"
emptyDir: {}
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: postgresql/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "postgresql-bootstrap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
annotations:
"argocd.argoproj.io/hook": "Sync"
"argocd.argoproj.io/hook-delete-policy": "BeforeHookCreation"
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-2.1.2
app.kubernetes.io/instance: postgresql
app.kubernetes.io/managed-by: Helm
annotations:
spec:
securityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: "postgresql"
containers:
- name: "psql"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b"
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- "-c"
- "/mnt/bootstrap/init-wait.sh && /mnt/bootstrap/init-user.sh && /mnt/bootstrap/init-db.sh"
volumeMounts:
- mountPath: "/mnt/bootstrap/"
name: "bootstrap"
readOnly: true
env:
- name: "PGHOST"
value: "postgresql"
- name: "PGPORT"
value: "5432"
- name: "PGUSER"
value: "postgres"
- name: "PGPASSWORD"
value: "e5c38aa93bd3191b54a288db3e820c103ebb52e0"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: "bootstrap"
secret:
secretName: "postgresql-job"
defaultMode: 0550
restartPolicy: Never
backoffLimit: 4
...
---
# Source: mariadb/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: "mariadb"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: mariadb/templates/secret-job.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "mariadb-job"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
stringData:
init-wait.sh: |
RETRIES=10
until mariadb-admin status --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do
echo "Waiting 30s for mariadb server, $((RETRIES--)) remaining attempts..."
sleep 30
done
if [ ${RETRIES} -eq "0" ]; then
echo "Maximum wait attempts exceeded, aborting".
exit 1;
fi
init-user-data.sql: |
CREATE USER IF NOT EXISTS "openxchange_user"@"%" IDENTIFIED BY "9778a34a657fc40e8f7e16bea4fd84d8e64e224c";
ALTER USER "openxchange_user"@"%" WITH MAX_USER_CONNECTIONS 100;
ALTER USER "openxchange_user"@"%" IDENTIFIED BY "9778a34a657fc40e8f7e16bea4fd84d8e64e224c";
init-user.sh: |
mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD}
init-db.sh: |
mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS openxchange_dummy;"
mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e 'GRANT ALL PRIVILEGES ON openxchange_dummy.* TO "openxchange_user"@"%";'
mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e "FLUSH PRIVILEGES;"
...
---
# Source: mariadb/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "mariadb"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
stringData:
rootPassword: "e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59"
...
---
# Source: mariadb/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "mariadb"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
data:
...
---
# Source: mariadb/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "mariadb"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "mariadb"
port: 3306
targetPort: mariadb
protocol: "TCP"
selector:
app.kubernetes.io/name: mariadb
app.kubernetes.io/instance: mariadb
...
---
# Source: mariadb/templates/statefulset.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: mariadb
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
serviceName: mariadb
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: mariadb
app.kubernetes.io/instance: mariadb
template:
metadata:
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: mariadb
terminationGracePeriodSeconds: 120
hostNetwork: false
hostIPC: false
containers:
- name: "mariadb"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f"
imagePullPolicy: IfNotPresent
env:
- name: "MARIADB_ROOT_PASSWORD"
valueFrom:
secretKeyRef:
name: mariadb
key: rootPassword
ports:
- name: mariadb
containerPort: 3306
protocol: TCP
startupProbe:
failureThreshold: 15
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
exec:
command:
- /bin/sh
- -ec
- mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}"
livenessProbe:
failureThreshold: 6
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
exec:
command:
- /bin/sh
- -ec
- mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}"
readinessProbe:
failureThreshold: 6
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
exec:
command:
- /bin/sh
- -ec
- mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}"
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 384Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
- name: "run-mysqld"
mountPath: "/run/mysqld"
- name: "data"
mountPath: "/var/lib/mysql"
volumes:
- name: "tmp"
emptyDir: {}
- name: "run-mysqld"
emptyDir: {}
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: mariadb/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "mariadb-bootstrap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
annotations:
"argocd.argoproj.io/hook": "Sync"
"argocd.argoproj.io/hook-delete-policy": "BeforeHookCreation"
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
labels:
app.kubernetes.io/name: mariadb
helm.sh/chart: mariadb-3.0.3
app.kubernetes.io/instance: mariadb
app.kubernetes.io/managed-by: Helm
annotations:
spec:
securityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: mariadb
containers:
- name: "mariadb"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f"
imagePullPolicy: IfNotPresent
command:
- "/bin/bash"
- "-c"
- "/mnt/bootstrap/init-wait.sh && /mnt/bootstrap/init-user.sh < /mnt/bootstrap/init-user-data.sql && /mnt/bootstrap/init-db.sh"
volumeMounts:
- mountPath: "/mnt/bootstrap/"
name: "bootstrap"
readOnly: true
env:
- name: "MARIADB_HOST"
value: "mariadb"
- name: "MARIADB_ROOT_PASSWORD"
valueFrom:
secretKeyRef:
name: mariadb
key: rootPassword
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 384Mi
volumes:
- name: "bootstrap"
secret:
secretName: "mariadb-job"
defaultMode: 0550
restartPolicy: Never
backoffLimit: 4
...
---
# Source: postfix/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: postfix
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
...
---
# Source: postfix/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "postfix"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
stringData:
username: "opendesk-system"
password: "1884bda7fb31c726adcd094399ab63319e9ca56f"
...
---
# Source: postfix/templates/configmap-overrides.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postfix-overrides"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
data:
sasl_passwd.map: |
:
...
---
# Source: postfix/templates/configmap-scripts.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postfix-scripts"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
data:
init-postfix.sh: |
#!/bin/bash
function initPostfix {
cp /etc/postfix/master.cf.template /etc/postfix/master.cf
cp /etc/postfix/main.cf.template /etc/postfix/main.cf
chmod g-w,o-w /etc/postfix /etc/postfix-copy /var/spool/postfix /var/lib/postfix
chown postfix /var/lib/postfix
if [ -f /overrides/postfix.cf ]; then
while read line; do
[[ -n "${line}" && "${line}" != [[:blank:]#]* ]] && postconf -e "${line}"
done < /overrides/postfix.cf
echo "Loaded '/overrides/postfix.cf'"
else
echo "No extra postfix settings loaded because optional '/overrides/postfix.cf' not provided."
fi
# Include table-map files
if ls -A /overrides/*.map 1> /dev/null 2>&1; then
cp /overrides/*.map /etc/postfix/
postmap /etc/postfix/*.map
rm /etc/postfix/*.map
chown root:root /etc/postfix/*.lmdb
chmod 0600 /etc/postfix/*.lmdb
echo "Loaded 'map files'"
else
echo "No extra map files loaded because optional '/overrides/*.map' not provided."
fi
echo -n ${AUTHDB_PASSWORD} | saslpasswd2 -c -u "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" ${AUTHDB_USERNAME}
chmod g+r /etc/sasl2/sasldb2
cp -a /etc/postfix/* /etc/postfix-copy/
echo "Init done"
}
initPostfix >> /proc/1/fd/1
start-postfix.sh: |
#!/bin/bash
function startPostfix {
saslauthd -a sasldb -d -O /etc/postfix/sasl2/smtpd.conf &
echo "Started Sasl Daemon Daemon"
/usr/sbin/postfix start-fg
}
startPostfix &>> /proc/1/fd/1
namespace-watcher.sh: |
#!/bin/bash
DELAY=${DELAY:-10}
DOMAIN=${DOMAIN:-"develop.souvap-univention.de"}
INTERNAL_DOMAIN=${INTERNAL_DOMAIN:-"svc.cluster.local"}
KUBECTL_BIN="/usr/bin/env kubectl"
MAILSERVER=${MAILSERVER:-"dovecot"}
MAILSERVER_PORT=${MAILSERVER_PORT:-"24"}
MAILSERVER_PROTOCOL=${MAILSERVER_PROTOCOL:-"lmtps"}
NAMESPACE=${NAMESPACE:-"default"}
SERVICE_NAME=${SERVICE_NAME:-"dovecot"}
TRANSPORT_MAP=${TRANSPORT_MAP:-"/etc/postfix/transport.map"}
VIRTUAL_MAILBOX_DOMAINS=${VIRTUAL_MAILBOX_DOMAINS:-"/etc/postfix/virtual_mailbox_domains.txt"}
WORKDIR=${WORKDIR:-"/namespace-watcher"}
touch "${WORKDIR}/virtual_mailbox_domains.txt"
touch "${WORKDIR}/transport.map"
update-postfix() {
echo "updating Postfix ..."
cp "${WORKDIR}/virtual_mailbox_domains.txt.tmp" "${WORKDIR}/virtual_mailbox_domains.txt"
cp "${WORKDIR}/transport.map.tmp" "${WORKDIR}/transport.map"
${KUBECTL_BIN} exec -n "${NAMESPACE}" ${HOSTNAME} -c postfix -- bash -c "cp \"${WORKDIR}/transport.map\" \"${TRANSPORT_MAP}\"; cp \"${WORKDIR}/virtual_mailbox_domains.txt\" \"${VIRTUAL_MAILBOX_DOMAINS}\"; postmap \"${TRANSPORT_MAP}\"; postfix reload"
}
while true; do
# Get all namespaces containting a service called dovecot
namespaces=( $( ${KUBECTL_BIN} get -A service -o jsonpath="{.items[?(@.metadata.name==\"${SERVICE_NAME}\")].metadata.namespace}" ) )
rm -f "${WORKDIR}/virtual_mailbox_domains.txt.tmp"
rm -f "${WORKDIR}/transport.map.tmp"
for ns in $(printf "%q\n" "${namespaces[@]}" | sort -u); do
# Get all mail domains from annotation
IFS=',' read -r -a domains <<< $( ${KUBECTL_BIN} get service -n ${ns} ${SERVICE_NAME} -o jsonpath='{.metadata.annotations.opendesk\.eu/mail-domains}' )
# Add default namespace domain
domains+=("${ns}.${DOMAIN}")
for domain in $(printf "%q\n" "${domains[@]}" | sort -u); do
echo "${domain}" >> "${WORKDIR}/virtual_mailbox_domains.txt.tmp"
echo "${domain} ${MAILSERVER_PROTOCOL}:${MAILSERVER}.${ns}:${MAILSERVER_PORT}" >> "${WORKDIR}/transport.map.tmp"
done
done
cmp "${WORKDIR}/transport.map" "${WORKDIR}/transport.map.tmp" || update-postfix
sleep ${DELAY}
echo "👀"
done
...
---
# Source: postfix/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postfix-config"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
data:
master.cf: |
# service type private unpriv chroot wakeup maxproc command + args
smtp inet n - n - 200 smtpd
-o smtpd_client_connection_count_limit=15
-o smtpd_client_restrictions=
-o smtpd_proxy_options=speed_adjust
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
-o smtpd_sender_restrictions=
submission inet n - n - - smtpd
-o smtpd_client_connection_count_limit=15
-o smtpd_proxy_options=speed_adjust
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o smtpd_reject_unlisted_recipient=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_security_level=may
-o syslog_name=postfix/submission
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
postlog unix-dgram n - n - 1 postlogd
lmtps unix - - n - - lmtp
-o lmtp_send_xforward_command=yes
-o lmtp_tls_ciphers=high
-o lmtp_tls_mandatory_ciphers=high
-o lmtp_tls_mandatory_protocols=>=TLSv1.2
-o lmtp_tls_note_starttls_offer=yes
-o lmtp_tls_protocols=>=TLSv1.2
-o lmtp_tls_security_level=encrypt
main.cf: |
compatibility_level=3.6
mydomain = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
myhostname = postfix
myorigin = $mydomain
inet_protocols = ipv4
# Message size limit
message_size_limit = 50000000
# Relayed networks
mynetworks = 127.0.0.1/32 [::1]/128 10.0.0.0/8
# Empty alias list to override the configuration variable and disable NIS
alias_maps =
# Only accept virtual emails
mydestination = $myhostname, localhost.$mydomain, localhost
# What mechanisms the Postfix lmtp/smtp client uses to look up a host's IP address
lmtp_host_lookup = native
smtp_host_lookup = native
recipient_delimiter = +
# Relayhost if any is configured
relayhost =
content_filter =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = lmdb:/etc/postfix/sasl_passwd.map
smtp_sasl_security_options =
smtp_tls_CAfile =
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache
virtual_mailbox_domains = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
virtual_transport = lmtps:dovecot:24
transport_maps =
###############
# Restrictions
###############
# Delay all rejects until all information can be logged
smtpd_delay_reject = yes
# Allowed senders are: the user or one of the alias destinations
smtpd_sender_login_maps = $virtual_alias_maps
# Helo restrictions are specified for smtp only in master.cf
smtpd_helo_required = yes
# Sender restrictions
smtpd_sender_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_sender_login_mismatch,
permit
# Recipient restrictions:
smtpd_recipient_restrictions =
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_mynetworks,
permit_sasl_authenticated,
permit
# Relay restrictions
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
cyrus_sasl_config_path = "/etc/postfix/sasl"
# smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes
smtpd_tls_cert_file = /etc/tls/tls.crt
smtpd_tls_key_file = /etc/tls/tls.key
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = lmdb:/var/lib/postfix/smtpd_scache
smtpd_milters = inet:clamav-simple:7357
milter_default_action = accept
###############
# Extra Settings
###############
maillog_file = /dev/stdout
smtpd.conf: |
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
sasldb_path: /etc/postfix/sasldb
...
---
# Source: postfix/templates/persistentvolumeclaim.yaml
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "postfix"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: postfix/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "postfix"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
spec:
type: "ClusterIP"
ports:
- port: 25
targetPort: 25
protocol: "TCP"
name: "smtp"
- port: 587
targetPort: 587
protocol: "TCP"
name: "smtps"
selector:
app.kubernetes.io/name: postfix
app.kubernetes.io/instance: postfix
...
---
# Source: postfix/templates/deployment.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "postfix"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: postfix
app.kubernetes.io/instance: postfix
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: 81bd3ff9d37b21391b7f1c7fdbff68632f3e316f925edf32dcb1feb099ea9da8
checksum/configmapoverrides: a0519350f440fde8cd07d5b8babba5eb186ba501196ca95333fee0662dc10c10
checksum/configmapnamespacewatcherbin: e222c5e7d6e26b5151f6e35368cf32cb1a4e1f936f0e818d234fb97dfdaf9da7
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix
app.kubernetes.io/managed-by: Helm
spec:
imagePullSecrets:
securityContext:
fsGroup: 101
serviceAccountName: postfix
volumes:
- name: "postfix-scripts"
configMap:
name: "postfix-scripts"
defaultMode: 0777
- name: "config-templates"
configMap:
name: "postfix-config"
- name: "config-master"
configMap:
name: "postfix-config"
items:
- key: "master.cf"
path: "master.cf"
- name: "config-main"
configMap:
name: "postfix-config"
items:
- key: "main.cf"
path: "main.cf"
- name: "config"
emptyDir:
sizeLimit: "100Mi"
medium: "Memory"
- name: "lib-postfix"
emptyDir:
sizeLimit: "100Mi"
medium: "Memory"
- name: "tls"
secret:
secretName: "opendesk-certificates-tls"
- name: "spool-postfix"
persistentVolumeClaim:
claimName: "postfix"
- name: "config-sasl"
configMap:
name: "postfix-config"
items:
- key: "smtpd.conf"
path: "smtpd.conf"
- name: "run-saslauthd"
emptyDir:
sizeLimit: "100Mi"
medium: "Memory"
- name: "sasl2"
emptyDir:
sizeLimit: "100Mi"
medium: "Memory"
- name: "overrides"
configMap:
name: "postfix-overrides"
initContainers:
- name: "init-postfix"
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d"
imagePullPolicy: "IfNotPresent"
command: ['bash', '-c', "/usr/local/bin/init-postfix.sh"]
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
env:
- name: "AUTHDB_USERNAME"
valueFrom:
secretKeyRef:
name: "postfix"
key: username
- name: "AUTHDB_PASSWORD"
valueFrom:
secretKeyRef:
name: "postfix"
key: password
volumeMounts:
- name: "config"
mountPath: "/etc/postfix-copy"
- name: "config-templates"
mountPath: "/etc/postfix/master.cf.template"
subPath: "master.cf"
- name: "config-templates"
mountPath: "/etc/postfix/main.cf.template"
subPath: "main.cf"
- name: "lib-postfix"
mountPath: "/var/lib/postfix"
- name: "postfix-scripts"
mountPath: "/usr/local/bin/init-postfix.sh"
subPath: "init-postfix.sh"
- name: "config-sasl"
mountPath: "/etc/postfix/sasl/smtpd.conf"
subPath: "smtpd.conf"
- name: "sasl2"
mountPath: "/etc/sasl2"
- name: "tls"
mountPath: "/etc/tls"
- name: "spool-postfix"
mountPath: "/var/spool/postfix"
- name: "overrides"
mountPath: "/overrides"
containers:
- name: "postfix"
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: true
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d"
imagePullPolicy: "IfNotPresent"
command: ['bash', '-c', "/usr/local/bin/start-postfix.sh"]
env:
ports:
- name: smtp
containerPort: 25
protocol: "TCP"
- name: smtps
containerPort: 587
protocol: "TCP"
readinessProbe:
tcpSocket:
port: 25
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
livenessProbe:
tcpSocket:
port: 25
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
volumeMounts:
- name: "config"
mountPath: "/etc/postfix"
readOnly: true
- name: "postfix-scripts"
mountPath: "/usr/local/bin/start-postfix.sh"
subPath: "start-postfix.sh"
- name: "config-sasl"
mountPath: "/etc/postfix/sasl/smtpd.conf"
subPath: "smtpd.conf"
- name: "run-saslauthd"
mountPath: "/run/saslauthd"
- name: "sasl2"
mountPath: "/etc/sasl2"
- name: "lib-postfix"
mountPath: "/var/lib/postfix"
- name: "tls"
mountPath: "/etc/tls"
- name: "spool-postfix"
mountPath: "/var/spool/postfix"
...
---
# Source: clamav-simple/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: "clamav-simple"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: clamav-simple
helm.sh/chart: clamav-simple-4.0.6
app.kubernetes.io/instance: clamav-simple
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: clamav-simple/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "clamav-simple"
labels:
app.kubernetes.io/name: clamav-simple
helm.sh/chart: clamav-simple-4.0.6
app.kubernetes.io/instance: clamav-simple
app.kubernetes.io/managed-by: Helm
data:
clamd.conf: |
DatabaseDirectory /var/lib/clamav
LogFileUnlock no
LogFileMaxSize 1M
LogTime no
LogVerbose no
LogSyslog yes
LogFacility LOG_LOCAL6
LogRotate no
LogClean no
PreludeEnable no
PreludeAnalyzerName ClamAV
ExtendedDetectionInfo yes
PidFile /tmp/clamd.pid
TemporaryDirectory /var/tmp
OfficialDatabaseOnly no
LocalSocket /tmp/clamd.sock
LocalSocketMode 660
FixStaleSocket yes
TCPSocket 3310
TCPAddr 0.0.0.0
MaxConnectionQueueLength 200
StreamMaxLength 100M
StreamMinPort 1024
StreamMaxPort 2048
MaxThreads 10
ReadTimeout 120
CommandReadTimeout 30
SendBufTimeout 500
MaxQueue 100
IdleTimeout 30
MaxDirectoryRecursion 15
FollowDirectorySymlinks no
FollowFileSymlinks no
CrossFilesystems yes
SelfCheck 120
ConcurrentDatabaseReload yes
VirusEvent no
User clamav
ExitOnOOM yes
Foreground yes
Debug no
LeaveTemporaryFiles no
GenerateMetadataJson yes
AllowAllMatchScan yes
DetectPUA no
ForceToDisk yes
DisableCache no
HeuristicAlerts yes
HeuristicScanPrecedence no
AlertBrokenExecutables yes
AlertBrokenMedia yes
AlertEncrypted no
AlertEncryptedArchive no
AlertEncryptedDoc no
AlertOLE2Macros no
AlertPhishingSSLMismatch no
AlertPhishingCloak no
AlertPartitionIntersection no
ScanPE yes
DisableCertCheck no
ScanELF yes
ScanOLE2 yes
ScanPDF yes
ScanSWF yes
ScanXMLDOCS yes
ScanHWP3 yes
ScanMail yes
ScanPartialMessages no
PhishingSignatures yes
PhishingScanURLs yes
StructuredDataDetection no
StructuredMinCreditCardCount 3
StructuredCCOnly no
StructuredMinSSNCount 3
StructuredSSNFormatNormal yes
StructuredSSNFormatStripped no
ScanHTML yes
ScanArchive yes
MaxScanTime 120000
MaxScanSize 400M
MaxFileSize 100M
MaxRecursion 17
MaxFiles 10000
MaxEmbeddedPE 40M
MaxHTMLNormalize 40M
MaxHTMLNoTags 8M
MaxScriptNormalize 20M
MaxZipTypeRcg 1M
MaxPartitions 50
MaxIconsPE 100
MaxRecHWP3 16
PCREMatchLimit 100000
PCRERecMatchLimit 2000
PCREMaxFileSize 100M
AlertExceedsMax no
OnAccessMaxFileSize 5M
OnAccessMaxThreads 5
OnAccessCurlTimeout 5000
OnAccessDisableDDD no
OnAccessPrevention no
OnAccessDenyOnError no
OnAccessExtraScanning no
OnAccessExcludeRootUID no
OnAccessExcludeUname no
Bytecode yes
BytecodeSecurity TrustSigned
BytecodeUnsigned no
BytecodeTimeout 10000
freshclam.conf: |
DatabaseDirectory /var/lib/clamav
LogFileMaxSize 1M
LogTime no
LogVerbose no
LogSyslog yes
LogFacility LOG_LOCAL6
LogRotate no
DatabaseOwner clamav
MaxAttempts 3
ScriptedUpdates yes
CompressLocalDatabase no
NotifyClamd no
Foreground yes
Debug no
ConnectTimeout 30
ReceiveTimeout 60
Bytecode yes
Checks 12
DatabaseMirror https://clamavdb.c3sl.ufpr.br
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/badmacro.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/blurl.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/hackingteam.hsb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/junk.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbl.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbla.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/lott.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malwarehash.hsb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phish.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phishtank.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/porcupine.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/rogue.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/scam.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/shelter.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamattach.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamimg.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spear.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spearl.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb
DatabaseCustomURL https://urlhaus.abuse.ch/downloads/urlhaus.ndb
clamav-milter.conf: |
MilterSocket inet:7357
FixStaleSocket yes
User clamav
ReadTimeout 120
Foreground yes
TemporaryDirectory /tmp
ClamdSocket unix:/tmp/clamd.sock
MaxFileSize 25M
OnClean Accept
OnInfected Quarantine
OnFail Defer
AddHeader no
LogFileUnlock no
LogFileMaxSize 1M
LogTime no
LogVerbose no
LogSyslog yes
LogFacility LOG_LOCAL6
LogRotate no
SupportMultipleRecipients yes
c-icap.conf: |
PidFile /run/c-icap/c-icap.pid
acl all src 0.0.0.0/0.0.0.0
icap_access allow all
client_access allow all
Port 1344
Timeout 300
MaxKeepAliveRequests 100
KeepAliveTimeout 600
StartServers 1
MaxServers 4
MinSpareThreads 10
MaxSpareThreads 20
ThreadsPerChild 10
ServerAdmin c-icap-admin
ServerName c-icap
TmpDir /var/tmp
MaxMemObject 131072
DebugLevel 1
Pipelining on
SupportBuggyClients off
RemoteProxyUsers off
ServerLog /dev/stdout
AccessLog /dev/stdout
ModulesDir /var/lib/clamav/lib/c_icap
ServicesDir /var/lib/clamav/lib/c_icap
TemplateDir /var/lib/clamav/share/c_icap/templates/
TemplateDefaultLanguage en
LoadMagicFile /var/lib/clamav/etc/c-icap.magic
RemoteProxyUsers off
RemoteProxyUserHeader X-Authenticated-User
RemoteProxyUserHeaderEncoded on
Service echo srv_echo.so
Include virus_scan.conf
virus_scan.conf: |
Service antivirus_module virus_scan.so
ServiceAlias avscan virus_scan?allow204=on&sizelimit=off&mode=simple
virus_scan.Allow204Responces on
virus_scan.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE
virus_scan.SendPercentData 5
virus_scan.StartSendPercentDataAfter 2M
virus_scan.MaxObjectSize 500M
Include clamd_mod.conf
clamd_mod.conf: |
Module common clamd_mod.so
clamd_mod.ClamdSocket /tmp/clamd.sock
...
---
# Source: clamav-simple/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "clamav-simple"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: clamav-simple
helm.sh/chart: clamav-simple-4.0.6
app.kubernetes.io/instance: clamav-simple
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "clamd"
port: 3310
targetPort: 3310
protocol: "TCP"
- name: "icap"
port: 1344
targetPort: 1344
protocol: "TCP"
- name: "milter"
port: 7357
targetPort: 7357
protocol: "TCP"
selector:
app.kubernetes.io/name: clamav-simple
app.kubernetes.io/instance: clamav-simple
...
---
# Source: clamav-simple/templates/statefulset.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: clamav-simple
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: clamav-simple
helm.sh/chart: clamav-simple-4.0.6
app.kubernetes.io/instance: clamav-simple
app.kubernetes.io/managed-by: Helm
spec:
serviceName: clamav-simple
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: clamav-simple
app.kubernetes.io/instance: clamav-simple
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: f140466c45580b59c5bb65ebdbc7126f93642bb7e6c6406adf40e003032a3586
labels:
app.kubernetes.io/name: clamav-simple
helm.sh/chart: clamav-simple-4.0.6
app.kubernetes.io/instance: clamav-simple
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: clamav-simple
initContainers:
- name: "chown"
image: "registry-1.docker.io/clamav/clamav:1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f"
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: false
seccompProfile:
type: RuntimeDefault
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- "-c"
- "chown -R clamav:clamav /var/lib/clamav"
volumeMounts:
- name: "clamav-database"
mountPath: "/var/lib/clamav/"
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1.5Gi
containers:
- name: "clamav"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 100
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/clamav/clamav:1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f"
imagePullPolicy: IfNotPresent
env:
- name: "CLAMAV_NO_CLAMD"
value: "false"
- name: "CLAMAV_NO_FRESHCLAMD"
value: "false"
- name: "CLAMAV_NO_MILTERD"
value: "false"
ports:
- name: "clamd"
containerPort: 3310
protocol: TCP
- name: "milter"
containerPort: 7357
protocol: TCP
livenessProbe:
tcpSocket:
port: "clamd"
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
tcpSocket:
port: "clamd"
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1.5Gi
volumeMounts:
- name: "config"
mountPath: "/etc/clamav"
- name: "clamav-database"
mountPath: "/var/lib/clamav/"
- name: "tmpfs-run-clamav"
mountPath: "/run/clamav"
- name: "tmpfs-run-lock"
mountPath: "/run/lock"
- name: "tmpfs-var-lock"
mountPath: "/var/lock"
- name: "tmpfs-var-log-clamav-log"
mountPath: "/var/log/clamav/"
- name: "tmpfs-tmp-dir"
mountPath: "/var/tmp"
- name: "tmpfs-tmp"
mountPath: "/tmp"
- name: "icap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 100
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/clamav-icap:0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a"
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- "-c"
- |
while ! nc -z 127.0.0.1 3310; do
echo 'Clamd not responding, please check if clamd is running';
sleep 5;
done;
/var/lib/clamav/bin/c-icap -N -D;
env:
ports:
- name: "icap"
containerPort: 1344
protocol: TCP
livenessProbe:
tcpSocket:
port: "icap"
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
tcpSocket:
port: "icap"
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1.5Gi
volumeMounts:
- name: "c-icap"
mountPath: "/var/lib/clamav/etc/c-icap.conf"
subPath: "c-icap.conf"
- name: "virus-scan"
mountPath: "/var/lib/clamav/etc/virus_scan.conf"
subPath: "virus_scan.conf"
- name: "clamd-mod"
mountPath: "/var/lib/clamav/etc/clamd_mod.conf"
subPath: "clamd_mod.conf"
- name: "tmpfs-var-run"
mountPath: "/var/run/c-icap"
- name: "tmpfs-tmp"
mountPath: "/tmp"
- name: "tmpfs-tmp-dir"
mountPath: "/var/tmp"
volumes:
- name: "config"
configMap:
name: "clamav-simple"
- name: "c-icap"
configMap:
name: "clamav-simple"
items:
- key: "c-icap.conf"
path: "c-icap.conf"
- name: "virus-scan"
configMap:
name: "clamav-simple"
items:
- key: "virus_scan.conf"
path: "virus_scan.conf"
- name: "clamd-mod"
configMap:
name: "clamav-simple"
items:
- key: "clamd_mod.conf"
path: "clamd_mod.conf"
- name: "tmpfs-run-clamav"
emptyDir: {}
- name: "tmpfs-run-lock"
emptyDir: {}
- name: "tmpfs-var-lock"
emptyDir: {}
- name: "tmpfs-var-log-clamav-log"
emptyDir: {}
- name: "tmpfs-var-run"
emptyDir:
- name: "tmpfs-tmp"
emptyDir:
- name: "tmpfs-tmp-dir"
emptyDir:
sizeLimit: "1Gi"
volumeClaimTemplates:
- metadata:
name: "clamav-database"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: minio/templates/provisioning-networkpolicy.yaml
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: minio-provisioning
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
spec:
podSelector:
matchLabels:
app.kubernetes.io/component: minio-provisioning
policyTypes:
- Ingress
- Egress
egress:
- {}
ingress:
---
# Source: minio/templates/pdb.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: minio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
spec:
maxUnavailable: 1
selector:
matchLabels:
app.kubernetes.io/instance: minio
app.kubernetes.io/name: minio
---
# Source: minio/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: minio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
automountServiceAccountToken: false
secrets:
- name: minio
---
# Source: minio/templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: minio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
type: Opaque
data:
root-user: "YWRtaW4="
root-password: "M2M4MGRiOTRiNjE0NTMwNjZjOWI5NjkzNjFkZTE0ZjY2ZDVhNjExYg=="
---
# Source: minio/templates/provisioning-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: minio-provisioning
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
app.kubernetes.io/component: minio-provisioning
data:
policy-migrations-bucket-policy.json: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::migrations"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::migrations/*"]
}
]
}
policy-nextcloud-bucket-policy.json: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::nextcloud"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::nextcloud/*"]
}
]
}
policy-notes-bucket-policy.json: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::notes"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::notes/*"]
}
]
}
policy-openproject-bucket-policy.json: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::openproject"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::openproject/*"]
}
]
}
policy-ums-bucket-policy.json: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::ums"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::ums/*"]
}
]
}
---
# Source: minio/templates/pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: minio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "10Gi"
---
# Source: minio/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: minio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
spec:
type: ClusterIP
ports:
- name: minio-api
port: 9000
targetPort: minio-api
nodePort: null
- name: minio-console
port: 9001
targetPort: minio-console
nodePort: null
selector:
app.kubernetes.io/instance: minio
app.kubernetes.io/name: minio
---
# Source: minio/templates/standalone/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
spec:
selector:
matchLabels:
app.kubernetes.io/instance: minio
app.kubernetes.io/name: minio
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
annotations:
checksum/credentials-secret: 97b540812be151f47c01d33b7e977f90b6b76ba8c66b8c9d878b492ad396ae94
spec:
serviceAccountName: minio
affinity:
podAffinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/instance: minio
app.kubernetes.io/name: minio
topologyKey: kubernetes.io/hostname
weight: 1
nodeAffinity:
automountServiceAccountToken: false
securityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch
supplementalGroups: []
sysctls: []
initContainers:
- name: volume-permissions
image: registry-1.docker.io/bitnami/os-shell:12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0
imagePullPolicy: "IfNotPresent"
command:
- /bin/bash
- -ec
- |
chown -R 1001:1001 /bitnami/minio/data
securityContext:
runAsUser: 0
seLinuxOptions: {}
resources:
limits:
cpu: 150m
ephemeral-storage: 2Gi
memory: 192Mi
requests:
cpu: 100m
ephemeral-storage: 50Mi
memory: 128Mi
volumeMounts:
- name: empty-dir
mountPath: /tmp
subPath: tmp-dir
- name: data
mountPath: /bitnami/minio/data
containers:
- name: minio
image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seccompProfile:
type: RuntimeDefault
env:
- name: BITNAMI_DEBUG
value: "false"
- name: MINIO_SCHEME
value: "http"
- name: MINIO_FORCE_NEW_KEYS
value: "no"
- name: MINIO_API_PORT_NUMBER
value: "9000"
- name: MINIO_ROOT_USER
valueFrom:
secretKeyRef:
name: minio
key: root-user
- name: MINIO_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: minio
key: root-password
- name: MINIO_BROWSER
value: "on"
- name: MINIO_PROMETHEUS_AUTH_TYPE
value: "public"
- name: MINIO_CONSOLE_PORT_NUMBER
value: "9001"
- name: MINIO_DATA_DIR
value: "/bitnami/minio/data"
envFrom:
ports:
- name: minio-api
containerPort: 9000
protocol: TCP
- name: minio-console
containerPort: 9001
protocol: TCP
livenessProbe:
httpGet:
path: /minio/health/live
port: minio-api
scheme: "HTTP"
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 5
readinessProbe:
tcpSocket:
port: minio-api
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 5
startupProbe:
tcpSocket:
port: minio-console
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 60
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 256Mi
volumeMounts:
- name: empty-dir
mountPath: /tmp
subPath: tmp-dir
- name: empty-dir
mountPath: /opt/bitnami/minio/tmp
subPath: app-tmp-dir
- name: empty-dir
mountPath: /.mc
subPath: app-mc-dir
- name: data
mountPath: /bitnami/minio/data
volumes:
- name: empty-dir
emptyDir: {}
- name: data
persistentVolumeClaim:
claimName: minio
---
# Source: minio/templates/api-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minio-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 4G
nginx.org/client-max-body-size: 4G
spec:
ingressClassName: "nginx"
rules:
- host: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: minio
port:
name: minio-api
tls:
- hosts:
- objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
secretName: opendesk-certificates-tls
---
# Source: minio/templates/provisioning-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: minio-provisioning
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: minio
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: minio
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
app.kubernetes.io/component: minio-provisioning
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
spec:
ttlSecondsAfterFinished: 60
parallelism: 1
template:
metadata:
labels:
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: 2024.12.13
helm.sh/chart: minio-14.10.1
app.kubernetes.io/component: minio-provisioning
spec:
restartPolicy: OnFailure
terminationGracePeriodSeconds: 0
securityContext:
fsGroup: 1001
fsGroupChangePolicy: Always
supplementalGroups: []
sysctls: []
serviceAccountName: minio
initContainers:
- name: wait-for-available-minio
image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: {}
seccompProfile:
type: RuntimeDefault
command:
- /bin/bash
- -c
- |-
set -e;
echo "Waiting for Minio";
wait-for-port \
--host=minio \
--state=inuse \
--timeout=120 \
9000;
echo "Minio is available";
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 256Mi
containers:
- name: minio
image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: {}
seccompProfile:
type: RuntimeDefault
command:
- /bin/bash
- -c
- |-
set -e;
echo "Start Minio provisioning";
function attachPolicy() {
local tmp=$(mc admin $1 info provisioning $2 | sed -n -e 's/^Policy.*: \(.*\)$/\1/p');
IFS=',' read -r -a CURRENT_POLICIES <<< "$tmp";
if [[ ! "${CURRENT_POLICIES[*]}" =~ "$3" ]]; then
mc admin policy attach provisioning $3 --$1=$2;
fi;
};
function detachDanglingPolicies() {
local tmp=$(mc admin $1 info provisioning $2 | sed -n -e 's/^Policy.*: \(.*\)$/\1/p');
IFS=',' read -r -a CURRENT_POLICIES <<< "$tmp";
IFS=',' read -r -a DESIRED_POLICIES <<< "$3";
for current in "${CURRENT_POLICIES[@]}"; do
if [[ ! "${DESIRED_POLICIES[*]}" =~ "${current}" ]]; then
mc admin policy detach provisioning $current --$1=$2;
fi;
done;
}
function addUsersFromFile() {
local username=$(grep -oP '^username=\K.+' $1);
local password=$(grep -oP '^password=\K.+' $1);
local disabled=$(grep -oP '^disabled=\K.+' $1);
local policies_list=$(grep -oP '^policies=\K.+' $1);
local set_policies=$(grep -oP '^setPolicies=\K.+' $1);
mc admin user add provisioning "${username}" "${password}";
IFS=',' read -r -a POLICIES <<< "${policies_list}";
for policy in "${POLICIES[@]}"; do
attachPolicy user "${username}" "${policy}";
done;
if [ "${set_policies}" == "true" ]; then
detachDanglingPolicies user "${username}" "${policies_list}";
fi;
local user_status="enable";
if [[ "${disabled}" != "" && "${disabled,,}" == "true" ]]; then
user_status="disable";
fi;
mc admin user "${user_status}" provisioning "${username}";
};
mc alias set provisioning $MINIO_SCHEME://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD;
mc admin service restart provisioning --wait --json;
# Adding a sleep to ensure that the check below does not cause
# a race condition. We check for the MinIO port because the
# "mc admin service restart --wait" command is not working as expected
sleep 5;
echo "Waiting for Minio to be available after restart";
wait-for-port \
--host=minio \
--state=inuse \
--timeout=120 \
9000;
echo "Minio is available. Executing provisioning commands";
mc admin policy create provisioning migrations-bucket-policy /etc/ilm/policy-migrations-bucket-policy.json;
mc admin policy create provisioning nextcloud-bucket-policy /etc/ilm/policy-nextcloud-bucket-policy.json;
mc admin policy create provisioning notes-bucket-policy /etc/ilm/policy-notes-bucket-policy.json;
mc admin policy create provisioning openproject-bucket-policy /etc/ilm/policy-openproject-bucket-policy.json;
mc admin policy create provisioning ums-bucket-policy /etc/ilm/policy-ums-bucket-policy.json;
mc admin user add provisioning migration_user 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8;
attachPolicy user migration_user migrations-bucket-policy;
detachDanglingPolicies user migration_user "migrations-bucket-policy";
mc admin user enable provisioning migration_user;
mc admin user add provisioning nextcloud_user cd58fb1bf965a7605e316b394f11ae9c67b3220f;
attachPolicy user nextcloud_user nextcloud-bucket-policy;
detachDanglingPolicies user nextcloud_user "nextcloud-bucket-policy";
mc admin user enable provisioning nextcloud_user;
mc admin user add provisioning notes_user 5c58820a84259ce3b869bfc267b53437f49d9902;
attachPolicy user notes_user notes-bucket-policy;
detachDanglingPolicies user notes_user "notes-bucket-policy";
mc admin user enable provisioning notes_user;
mc admin user add provisioning openproject_user 200f449601dec2cd474d0695f4f802493413f322;
attachPolicy user openproject_user openproject-bucket-policy;
detachDanglingPolicies user openproject_user "openproject-bucket-policy";
mc admin user enable provisioning openproject_user;
mc admin user add provisioning ums_user 915f15805278ef774a1cf3abfa6b8623c1fa4544;
attachPolicy user ums_user ums-bucket-policy;
detachDanglingPolicies user ums_user "ums-bucket-policy";
mc admin user enable provisioning ums_user;
mc mb provisioning/migrations --ignore-existing ;
mc version suspend provisioning/migrations;
mc mb provisioning/nextcloud --ignore-existing ;
mc version suspend provisioning/nextcloud;
mc mb provisioning/notes --ignore-existing ;
mc version enable provisioning/notes;
mc mb provisioning/openproject --ignore-existing ;
mc version suspend provisioning/openproject;
mc mb provisioning/ums --ignore-existing ;
mc version suspend provisioning/ums;
mc anonymous set download provisioning/ums/portal-assets;
echo "End Minio provisioning";
env:
- name: MINIO_SCHEME
value: "http"
- name: MINIO_ROOT_USER
valueFrom:
secretKeyRef:
name: minio
key: root-user
- name: MINIO_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: minio
key: root-password
envFrom:
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 256Mi
volumeMounts:
- name: empty-dir
mountPath: /.mc
subPath: app-mc-dir
- name: empty-dir
mountPath: /opt/bitnami/minio/tmp
subPath: app-tmp-dir
- name: empty-dir
mountPath: /tmp
subPath: tmp-dir
- name: minio-provisioning
mountPath: /etc/ilm
volumes:
- name: empty-dir
emptyDir: {}
- name: minio-provisioning
configMap:
name: minio-provisioning
---
# Source: nubus/charts/keycloak/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-keycloak
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak
helm.sh/chart: keycloak-0.9.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusGuardian/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-guardian
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: guardian
helm.sh/chart: nubusGuardian-0.17.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "2.0.0"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusKeycloakBootstrap/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-keycloak-bootstrap
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak-bootstrap
helm.sh/chart: nubusKeycloakBootstrap-0.10.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/serviceaccount-handler.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-keycloak-extensions-handler
labels:
app.kubernetes.io/name: keycloak-extensions
helm.sh/chart: nubusKeycloakExtensions-0.16.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "21.0.1"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/serviceaccount-proxy.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-keycloak-extensions-proxy
labels:
app.kubernetes.io/name: keycloak-extensions
helm.sh/chart: nubusKeycloakExtensions-0.16.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "21.0.1"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusLdapNotifier/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-ldap-notifier
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-notifier
helm.sh/chart: nubusLdapNotifier-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "14.0.4"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: ums-ldap-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
---
# Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-portal-frontend
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-frontend
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusPortalServer/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-portal-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-server
helm.sh/chart: nubusPortalServer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-server
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusProvisioning/charts/nats/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-provisioning-nats
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-nats
helm.sh/chart: nats-0.3.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-provisioning-nats
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusProvisioning/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-provisioning
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-selfservice-listener
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: selfservice-listener
helm.sh/chart: nubusSelfServiceConsumer-0.14.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusStackDataUms/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-stack-data-ums
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusUdmListener/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-provisioning-udm-listener
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-udm-listener
helm.sh/chart: nubusUdmListener-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusUdmRestApi/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-udm-rest-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
annotations:
intended.usage: compliance
intents.otterize.com/service-name: ums-udm-rest-api
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusUmcGateway/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-umc-gateway
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-gateway
helm.sh/chart: nubusUmcGateway-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusUmcServer/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ums-umc-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
automountServiceAccountToken: false
...
---
# Source: nubus/charts/nubusPortalConsumer/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: ums-portal-consumer-common
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-consumer
helm.sh/chart: nubusPortalConsumer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
data:
machine_secret: ""
ca_cert: ""
cert_pem: ""
---
# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-stack-data-ums-context"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
type: Opaque
stringData:
context.yaml: |
apps:
cassandra:
enabled: false
namespace: null
certificates:
enabled: true
namespace: null
clamavDistributed:
enabled: false
namespace: null
clamavSimple:
enabled: true
namespace: null
collabora:
enabled: true
namespace: null
collaboraController:
enabled: false
namespace: null
cryptpad:
enabled: true
namespace: null
dkimpy:
enabled: false
namespace: null
dovecot:
enabled: true
namespace: null
element:
enabled: true
namespace: null
elementAdmin:
enabled: false
namespace: null
elementGroupsync:
enabled: false
namespace: null
home:
enabled: true
namespace: null
jitsi:
enabled: false
namespace: null
mariadb:
enabled: true
namespace: null
memcached:
enabled: true
namespace: null
migrations:
enabled: true
namespace: null
minio:
enabled: true
namespace: null
nextcloud:
enabled: true
namespace: null
notes:
enabled: true
namespace: null
nubus:
enabled: true
namespace: null
openproject:
enabled: true
namespace: null
oxAppSuite:
enabled: true
namespace: null
postfix:
enabled: true
namespace: null
postgresql:
enabled: true
namespace: null
redis:
enabled: true
namespace: null
staticFiles:
enabled: true
namespace: null
xwiki:
enabled: true
namespace: null
defaultGroupOtherObjects: cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal
domainName: 'yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de'
enableDefaultLogin: 'false'
externalMailDomain: 'yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de'
initialPasswordAdministrator: 937393b22852fc828b0d68283dddcb9f8fb97411
ldapBaseDn: 'dc=swp-ldap,dc=internal'
ldapSearchUsers:
- lastname: LDAP-Search-User
password: 40290e376095d33c0c650723efa007abec1ee3fd
username: ldapsearch_dovecot
- lastname: LDAP-Search-User
password: 96380258a941863a5f9ecf74f3f88f1b563cae35
username: ldapsearch_element
- lastname: LDAP-Search-User
password: 6f85092e969e10c851eef49367019d1e02a4a8a0
username: ldapsearch_keycloak
- lastname: LDAP-Search-User
password: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0
username: ldapsearch_nextcloud
- lastname: LDAP-Search-User
password: 9c96f85df1170aaa929a6763111ff9472b2d109f
username: ldapsearch_openproject
- lastname: LDAP-Search-User
password: 57356bf92e475164a8c4522dfd8453bb162094d4
username: ldapsearch_ox
- lastname: LDAP-Search-User
password: 8072148becdef928e46f5686560bbbcd9c9a4284
username: ldapsearch_xwiki
ldapSystemUsers: []
loadDevData: true
opendeskAdminAttributes: true
opendeskEnterprise: null
opendeskGroupAttributes: true
opendeskUserAttributes: true
oxContextHidden: true
oxDefaultContext: "1"
portalEnforceLogin: true
portalFileshareLinkBase: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalGroupwareLinkBase: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalHeaderLogo: |
PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==
portalLinkLegalNotice: https://opendesk.eu/impressum
portalLinkPrivacyStatement: https://zendis.de/datenschutzerklaerung
portalManagementKnowledgeLinkBase: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalManagementProjectLinkBase: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalNotesLinkBase: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalRealtimeCollaborationLinkBase: https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalRealtimeVideoconferenceLinkBase: https://meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
portalTiles:
adminAnnouncement: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNzE2LjkyLTQ2MHYtNDBoMTI5LjIzdjQwSDcxNi45MlptNDMuMzkgMjU4LjQ2LTEwMy4zOS03Ny41NCAyNC45My0zMS42OSAxMDMuMzggNzcuNTQtMjQuOTIgMzEuNjlabS04MS41NC00NTAuNzdMNjUzLjg1LTY4NGwxMDMuMzgtNzcuNTQgMjQuOTIgMzEuNjktMTAzLjM4IDc3LjU0Wk0yMjAtMjQxLjU0di0xNTIuMzFoLTQxLjU0cS0yNi44NCAwLTQ1LjczLTE4Ljg4LTE4Ljg4LTE4Ljg5LTE4Ljg4LTQ1Ljczdi00My4wOHEwLTI2Ljg0IDE4Ljg4LTQ1LjczIDE4Ljg5LTE4Ljg4IDQ1LjczLTE4Ljg4aDE0OS4yM0w0ODYuMTUtNjYwdjM2MGwtMTU4LjQ2LTkzLjg1SDI2MHYxNTIuMzFoLTQwWm0yMjYuMTUtMTI5LjY5di0yMTcuNTRsLTEwNy4yMyA2Mi42MkgxNzguNDZxLTkuMjMgMC0xNi45MiA3LjY5LTcuNjkgNy42OS03LjY5IDE2LjkydjQzLjA4cTAgOS4yMyA3LjY5IDE2LjkyIDcuNjkgNy42OSAxNi45MiA3LjY5aDE2MC40NmwxMDcuMjMgNjIuNjJabTExMC43NyA2Ljc3di0yMzEuMDhxMjAuMDggMTguNjIgMzIuMzUgNDguODkgMTIuMjcgMzAuMjcgMTIuMjcgNjYuNjUgMCAzNi4zOC0xMi4yNyA2Ni42NS0xMi4yNyAzMC4yNy0zMi4zNSA0OC44OVpNMzAwLTQ4MFoiLz48L3N2Zz4K
adminContext: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
adminFunctionalmailbox: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNjAwLTI0MHY4OS4yM3EwIDEyLjM5LTkuMTkgMjEuNTgtOS4xOSA5LjE5LTIxLjU4IDkuMTlIMTUwLjc3cS0xMi4zOSAwLTIxLjU4LTkuMTktOS4xOS05LjE5LTkuMTktMjEuNTh2LTI1OC40NnEwLTEyLjM5IDkuMTktMjEuNTggOS4xOS05LjE5IDIxLjU4LTkuMTlIMjgwdi0yMDBxMC04My4wOCA1OC40Ni0xNDEuNTRRMzk2LjkyLTg0MCA0ODAtODQwaDE2MHE4My4wOCAwIDE0MS41NCA1OC40NlE4NDAtNzIzLjA4IDg0MC02NDB2NTIwaC00MHYtMTIwSDYwMFptMC00MGgyMDB2LTM2MHEwLTY2LTQ3LTExM3QtMTEzLTQ3SDQ4MHEtNjYgMC0xMTMgNDd0LTQ3IDExM3YyMDBoMjQ5LjIzcTEyLjM5IDAgMjEuNTggOS4xOSA5LjE5IDkuMTkgOS4xOSAyMS41OFYtMjgwWk00MjAtNTgwdi00MGgyODB2NDBINDIwWm0tNjAgMjk0IDIwMC0xMTRIMTYwbDIwMCAxMTRabTAgNDAuNzctMjAwLTExNFYtMTYwaDQwMHYtMTk5LjIzbC0yMDAgMTE0Wk0xNjAtNDAwdjI0MC0yNDBaIi8+PC9zdmc+
adminGroup: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMTAzLjg1LTIxNS4zOHYtNjUuODVxMC0yNy44NSAxNC40Mi00Ny44OSAxNC40Mi0yMC4wMyAzOC43Ni0zMi4wMiA1Mi4wNS0yNC43OCAxMDMuMzUtMzkuNTEgNTEuMzEtMTQuNzMgMTIzLjQ3LTE0LjczIDcyLjE1IDAgMTIzLjQ2IDE0LjczIDUxLjMxIDE0LjczIDEwMy4zNSAzOS41MSAyNC4zNCAxMS45OSAzOC43NiAzMi4wMiAxNC40MyAyMC4wNCAxNC40MyA0Ny44OXY2NS44NWgtNTYwWm02NDAgMHYtNjcuN3EwLTM0Ljc3LTE0LjA4LTY1LjY0LTE0LjA3LTMwLjg3LTM5LjkyLTUyLjk3IDI5LjQ2IDYgNTYuNzcgMTYuNjUgMjcuMyAxMC42NiA1NCAyMy45NiAyNiAxMy4wOCA0MC43NyAzMy40NyAxNC43NiAyMC40IDE0Ljc2IDQ0LjUzdjY3LjdoLTExMi4zWm0tMzYwLTI4OS4yNHEtNDkuNSAwLTg0Ljc1LTM1LjI1dC0zNS4yNS04NC43NXEwLTQ5LjUgMzUuMjUtODQuNzV0ODQuNzUtMzUuMjVxNDkuNSAwIDg0Ljc1IDM1LjI1dDM1LjI1IDg0Ljc1cTAgNDkuNS0zNS4yNSA4NC43NXQtODQuNzUgMzUuMjVabTI5MC43Ny0xMjBxMCA0OS41LTM1LjI1IDg0Ljc1dC04NC43NSAzNS4yNXEtMi41NCAwLTYuNDctLjU3LTMuOTItLjU4LTYuNDYtMS4yNyAyMC4zMy0yNC45IDMxLjI0LTU1LjI0IDEwLjkyLTMwLjM0IDEwLjkyLTYzLjAxdC0xMS40My02Mi40NHEtMTEuNDItMjkuNzctMzAuNzMtNTUuNjIgMy4yMy0xLjE1IDYuNDYtMS41IDMuMjMtLjM1IDYuNDctLjM1IDQ5LjUgMCA4NC43NSAzNS4yNXQzNS4yNSA4NC43NVpNMTQzLjg1LTI1NS4zOGg0ODB2LTI1Ljg1cTAtMTQuMDgtNy4wNC0yNC42Mi03LjA0LTEwLjUzLTI1LjI3LTIwLjE1LTQ0Ljc3LTIzLjkyLTk0LjM5LTM2LjY1LTQ5LjYxLTEyLjczLTExMy4zLTEyLjczLTYzLjcgMC0xMTMuMzEgMTIuNzMtNDkuNjIgMTIuNzMtOTQuMzkgMzYuNjUtMTguMjMgOS42Mi0yNS4yNyAyMC4xNS03LjAzIDEwLjU0LTcuMDMgMjQuNjJ2MjUuODVabTI0MC0yODkuMjRxMzMgMCA1Ni41LTIzLjV0MjMuNS01Ni41cTAtMzMtMjMuNS01Ni41dC01Ni41LTIzLjVxLTMzIDAtNTYuNSAyMy41dC0yMy41IDU2LjVxMCAzMyAyMy41IDU2LjV0NTYuNSAyMy41Wm0wIDI4OS4yNFptMC0zNjkuMjRaIi8+PC9zdmc+
adminResource: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMTgwLTE2MHYtNDBoODB2LTYwMGgzMjB2NDBoMTIwdjU2MGg4MHY0MEg2NjB2LTU2MGgtODB2NTYwSDE4MFptMTIwLTYwMHY1NjAtNTYwWm0xNjAgMzEwLjc3cTEyLjM4IDAgMjEuNTgtOS4xOSA5LjE5LTkuMiA5LjE5LTIxLjU4IDAtMTIuMzgtOS4xOS0yMS41OC05LjItOS4xOS0yMS41OC05LjE5LTEyLjM4IDAtMjEuNTggOS4xOS05LjE5IDkuMi05LjE5IDIxLjU4IDAgMTIuMzggOS4xOSAyMS41OCA5LjIgOS4xOSAyMS41OCA5LjE5Wk0zMDAtMjAwaDI0MHYtNTYwSDMwMHY1NjBaIi8+PC9zdmc+
adminUser: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNDgwLTUwNC42MnEtNDkuNSAwLTg0Ljc1LTM1LjI1VDM2MC02MjQuNjJxMC00OS41IDM1LjI1LTg0Ljc1VDQ4MC03NDQuNjJxNDkuNSAwIDg0Ljc1IDM1LjI1VDYwMC02MjQuNjJxMCA0OS41LTM1LjI1IDg0Ljc1VDQ4MC01MDQuNjJaTTIwMC0yMTUuMzh2LTY1Ljg1cTAtMjQuNzcgMTQuNDItNDYuMzUgMTQuNDMtMjEuNTcgMzguODEtMzMuNSA1Ni42Mi0yNy4xNSAxMTMuMzEtNDAuNzMgNTYuNjktMTMuNTcgMTEzLjQ2LTEzLjU3IDU2Ljc3IDAgMTEzLjQ2IDEzLjU3IDU2LjY5IDEzLjU4IDExMy4zMSA0MC43MyAyNC4zOCAxMS45MyAzOC44MSAzMy41UTc2MC0zMDYgNzYwLTI4MS4yM3Y2NS44NUgyMDBabTQwLTQwaDQ4MHYtMjUuODVxMC0xMy4zMS04LjU4LTI1LTguNTctMTEuNjktMjMuNzMtMTkuNzctNDkuMzgtMjMuOTItMTAxLjgzLTM2LjY1LTUyLjQ1LTEyLjczLTEwNS44Ni0xMi43M3QtMTA1Ljg2IDEyLjczUTMyMS42OS0zNDkuOTIgMjcyLjMxLTMyNnEtMTUuMTYgOC4wOC0yMy43MyAxOS43Ny04LjU4IDExLjY5LTguNTggMjV2MjUuODVabTI0MC0yODkuMjRxMzMgMCA1Ni41LTIzLjV0MjMuNS01Ni41cTAtMzMtMjMuNS01Ni41dC01Ni41LTIzLjVxLTMzIDAtNTYuNSAyMy41dC0yMy41IDU2LjVxMCAzMyAyMy41IDU2LjV0NTYuNSAyMy41Wm0wLTgwWm0wIDM2OS4yNFoiLz48L3N2Zz4=
anonymousLogin: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjguNjc3OCA4MC4xMTQ1VjgxLjY1NjVDNjguNjc3OCA4OC4xNjQ3IDYzLjQ0OTggOTMuNDU2NyA1Ny4wMjAzIDkzLjQ1NjdIMjkuNjU3NEMyMy4yMjc5IDkzLjQ1NjcgMTcuOTk5OSA4OC4xNjQ3IDE3Ljk5OTkgODEuNjU2NVY1My45NTg2QzE3Ljk5OTkgNDcuNDUwMyAyMy4yMjc5IDQyLjE1ODMgMjkuNjU3NCA0Mi4xNTgzSDMxLjE4MDdWODAuMTIxOEg2OC42ODQ5TDY4LjY3NzggODAuMTE0NVoiIGZpbGw9IiM4RTc1RkEiLz4KPHBhdGggZD0iTTY5LjE4NTYgNzAuODc3SDQwLjI5OTNWMzguNTUzQzQwLjI5OTMgMjcuNTIwMiA0OS4xNjc2IDE4LjU0MzMgNjAuMDY3IDE4LjU0MzNINjkuMTkyN0M4MS43NjU2IDE4LjU0MzMgOTEuOTk5OSAyOC45MDI5IDkxLjk5OTkgNDEuNjI5OFY0Ny43ODMzQzkxLjk5OTkgNjAuNTEwMiA4MS43NjU2IDcwLjg2OTcgNjkuMTkyNyA3MC44Njk3TDY5LjE4NTYgNzAuODc3Wk01My40NzMgNTcuNTM0OEg2OS4xODU2Qzc0LjQ5MjIgNTcuNTM0OCA3OC44MTE5IDUzLjE2MjIgNzguODExOSA0Ny43OTA1VjQxLjYzN0M3OC44MTE5IDM2LjI2NTQgNzQuNDkyMiAzMS44OTI4IDY5LjE4NTYgMzEuODkyOEg2MC4wNTk4QzU2LjQyNjcgMzEuODkyOCA1My40NzMgMzQuODgyNyA1My40NzMgMzguNTYwM1Y1Ny41NDJWNTcuNTM0OFoiIGZpbGw9IiM1NzFFRkEiLz4KPC9zdmc+Cg==
empty: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
fileshareActivity: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
fileshareDirectdocOdp: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNDgwLTQ4MFpNMjI0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE2MC0xOTcgMTYwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExOTctODAwIDIyNC42Mi04MDBoMjgwdjQwaC0yODBxLTEwLjc3IDAtMTcuNyA2LjkyLTYuOTIgNi45My02LjkyIDE3Ljd2NTEwLjc2cTAgMTAuNzcgNi45MiAxNy43IDYuOTMgNi45MiAxNy43IDYuOTJoNTEwLjc2cTEwLjc3IDAgMTcuNy02LjkyIDYuOTItNi45MyA2LjkyLTE3Ljd2LTI4MGg0MHYyODBxMCAyNy42Mi0xOC41IDQ2LjEyUTc2My0xNjAgNzM1LjM4LTE2MEgyMjQuNjJabTQ2LjE1LTE0NC42Mmg0MTguNDZMNTYwLTQ3Ni45MiA0NDAtMzI1LjM4bC04MC05Ni4xNi04OS4yMyAxMTYuOTJaTTY4MC02MDB2LTgwaC04MHYtNDBoODB2LTgwaDQwdjgwaDgwdjQwaC04MHY4MGgtNDBaIi8+PC9zdmc+
fileshareDirectdocOds: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMjA0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE0MC0xOTcgMTQwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExNzctODAwIDIwNC42Mi04MDBoMzcyLjN2NDBoLTM3Mi4zcS0xMC43NyAwLTE3LjcgNi45Mi02LjkyIDYuOTMtNi45MiAxNy43djUxMC43NnEwIDEwLjc3IDYuOTIgMTcuNyA2LjkzIDYuOTIgMTcuNyA2LjkyaDUxMC43NnExMC43NyAwIDE3LjctNi45MiA2LjkyLTYuOTMgNi45Mi0xNy43di0zNzIuM2g0MHYzNzIuM3EwIDI3LjYyLTE4LjUgNDYuMTJRNzQzLTE2MCA3MTUuMzgtMTYwSDIwNC42MlptODQuNjEtMTQwaDQwdi0yNDBoLTQwdjI0MFpNNDQwLTMwMGg0MHYtMzYwaC00MHYzNjBabTE1MC43NyAwaDQwdi0xMjBoLTQwdjEyMFpNNzAwLTY0MHYtODBoLTgwdi00MGg4MHYtODBoNDB2ODBoODB2NDBoLTgwdjgwaC00MFpNNDYwLTQ4MFoiLz48L3N2Zz4=
fileshareDirectdocOdt: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMjA0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE0MC0xOTcgMTQwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExNzctODAwIDIwNC42Mi04MDBoMzcyLjN2NDBoLTM3Mi4zcS05LjI0IDAtMTYuOTMgNy42OS03LjY5IDcuNjktNy42OSAxNi45M3Y1MTAuNzZxMCA5LjI0IDcuNjkgMTYuOTMgNy42OSA3LjY5IDE2LjkzIDcuNjloNTEwLjc2cTkuMjQgMCAxNi45My03LjY5IDcuNjktNy42OSA3LjY5LTE2Ljkzdi0zNzIuM2g0MHYzNzIuM3EwIDI3LjYyLTE4LjUgNDYuMTJRNzQzLTE2MCA3MTUuMzgtMTYwSDIwNC42MlpNMzIwLTMwMHYtNDBoMjgwdjQwSDMyMFptMC0xMjB2LTQwaDI4MHY0MEgzMjBabTAtMTIwdi00MGgyODB2NDBIMzIwWm0zODAtMTAwdi04MGgtODB2LTQwaDgwdi04MGg0MHY4MGg4MHY0MGgtODB2ODBoLTQwWiIvPjwvc3ZnPg==
fileshareFiles: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMDcxOCA0My44MjE0SDc4LjYxNDZDODIuOTEzNCA0My44MjE0IDg2LjQwOTYgNDcuMzE3NiA4Ni40MDk2IDUxLjYxNjRWNzQuOTkwM0M4Ni40MDk2IDc5LjI4OTEgODIuOTEzNCA4Mi43ODUyIDc4LjYxNDYgODIuNzg1MkgzMS44NjY3QzI3LjU2OCA4Mi43ODUyIDI0LjA3MTggNzkuMjg5MSAyNC4wNzE4IDc0Ljk5MDNWNDMuODIxNFoiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTUwLjU1NzEgMzYuMDI2NkgyNC4wNzE4VjMxLjM1NEMyNC4wNzE4IDI3LjA0NDIgMjcuNTU3IDIzLjU1OSAzMS44NjY3IDIzLjU1OUg0NC4zMzQzTDUwLjU2ODEgMzYuMDI2Nkg1MC41NTcxWiIgZmlsbD0iIzM0MTI5MSIvPgo8L3N2Zz4K
groupwareCalendar: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzYuNzk3OSA2MC4yMjAzSDE0Ljk4NDFWODMuNTk1M0gzNi43OTc5VjYwLjIyMDNaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Ni40MDY5IDYwLjIyMDNINDQuNTkzMVY4My41OTUzSDY2LjQwNjlWNjAuMjIwM1oiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTM2Ljc5NzkgMjkuMDYwOUgxNC45ODQxVjUyLjQzNTlIMzYuNzk3OVYyOS4wNjA5WiIgZmlsbD0iIzM0MTI5MSIvPgo8cGF0aCBkPSJNNjYuNDA2OSAyOS4wNjA5SDQ0LjU5MzFWNTIuNDM1OUg2Ni40MDY5VjI5LjA2MDlaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05Ni4wMTU5IDI5LjA2MDlINzQuMjAyMVY1Mi40MzU5SDk2LjAxNTlWMjkuMDYwOVoiIGZpbGw9IiM1NzFFRkEiLz4KPC9zdmc+Cg==
groupwareContacts: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzMuNjg2MyA1My45ODYxQzQwLjE0MTEgNTMuOTg2MSA0NS4zNzM4IDQ4Ljc1MzQgNDUuMzczOCA0Mi4yOTg2QzQ1LjM3MzggMzUuODQzOCA0MC4xNDExIDMwLjYxMTEgMzMuNjg2MyAzMC42MTExQzI3LjIzMTUgMzAuNjExMSAyMS45OTg4IDM1Ljg0MzggMjEuOTk4OCA0Mi4yOTg2QzIxLjk5ODggNDguNzUzNCAyNy4yMzE1IDUzLjk4NjEgMzMuNjg2MyA1My45ODYxWiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNzcuMzEzNyA1My45ODYxQzgzLjc2ODUgNTMuOTg2MSA4OS4wMDEyIDQ4Ljc1MzQgODkuMDAxMiA0Mi4yOTg2Qzg5LjAwMTIgMzUuODQzOCA4My43Njg1IDMwLjYxMTEgNzcuMzEzNyAzMC42MTExQzcwLjg1ODkgMzAuNjExMSA2NS42MjYyIDM1Ljg0MzggNjUuNjI2MiA0Mi4yOTg2QzY1LjYyNjIgNDguNzUzNCA3MC44NTg5IDUzLjk4NjEgNzcuMzEzNyA1My45ODYxWiIgZmlsbD0iIzM0MTI5MSIvPgo8cGF0aCBkPSJNMTQuOTg0MSA4MC40ODM2QzE0Ljk4NDEgNzAuMTU5NCAyMy4zNTEyIDYxLjc4MTQgMzMuNjg2MyA2MS43ODE0QzQ0LjAyMTUgNjEuNzgxNCA1Mi4zODg1IDcwLjE0ODQgNTIuMzg4NSA4MC40ODM2SDE0Ljk4NDFaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik01OC42MTE2IDgwLjQ4MzZDNTguNjExNiA3MC4xNTk0IDY2Ljk3ODYgNjEuNzgxNCA3Ny4zMTM4IDYxLjc4MTRDODcuNjQ4OSA2MS43ODE0IDk2LjAxNiA3MC4xNDg0IDk2LjAxNiA4MC40ODM2SDU4LjYxMTZaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo=
groupwareMail: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTUuNjcxIDU1LjVMODQuMjEzNiAzNC4wOTMxQzgyLjgzOTIgMzIuODcyNiA4MS4wMzYgMzIuMTI1IDc5LjA0NiAzMi4xMjVIMzIuMjk2QzMwLjMxNjkgMzIuMTI1IDI4LjUwMjggMzIuODcyNiAyNy4xMjg0IDM0LjA5MzFMNTUuNjcxIDU1LjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Mi4xNjg5IDYwLjM3MDdMNTUuNjcwOSA2NS4yNDE0TDQ5LjE3MyA2MC4zNzA3TDI0LjUwMDYgNDEuODY2NFY3MS4wNzk2QzI0LjUwMDYgNzUuMzc4NiAyNy45ODYgNzguODc0OSAzMi4yOTU5IDc4Ljg3NDlINzkuMDQ1OUM4My4zNDQ5IDc4Ljg3NDkgODYuODQxMyA3NS4zODk2IDg2Ljg0MTMgNzEuMDc5NlY0MS44NjY0TDYyLjE2ODkgNjAuMzcwN1oiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg==
groupwareTasks: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjYuNjcxNiA1Mi40MzZDMzMuMTI2NSA1Mi40MzYgMzguMzU5MSA0Ny4yMDMzIDM4LjM1OTEgNDAuNzQ4NUMzOC4zNTkxIDM0LjI5MzYgMzMuMTI2NSAyOS4wNjEgMjYuNjcxNiAyOS4wNjFDMjAuMjE2OCAyOS4wNjEgMTQuOTg0MSAzNC4yOTM2IDE0Ljk4NDEgNDAuNzQ4NUMxNC45ODQxIDQ3LjIwMzMgMjAuMjE2OCA1Mi40MzYgMjYuNjcxNiA1Mi40MzZaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05Mi45MDQzIDM2Ljg0NTVINDYuMTU0M1Y0NC42NDA4SDkyLjkwNDNWMzYuODQ1NVoiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTI2LjY3MTYgODIuMDM0MUMzMy4xMjY1IDgyLjAzNDEgMzguMzU5MSA3Ni44MDE0IDM4LjM1OTEgNzAuMzQ2NkMzOC4zNTkxIDYzLjg5MTcgMzMuMTI2NSA1OC42NTkxIDI2LjY3MTYgNTguNjU5MUMyMC4yMTY4IDU4LjY1OTEgMTQuOTg0MSA2My44OTE3IDE0Ljk4NDEgNzAuMzQ2NkMxNC45ODQxIDc2LjgwMTQgMjAuMjE2OCA4Mi4wMzQxIDI2LjY3MTYgODIuMDM0MVoiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTkyLjkwNDMgNjYuNDU0M0g0Ni4xNTQzVjc0LjI0OTdIOTIuOTA0M1Y2Ni40NTQzWiIgZmlsbD0iIzM0MTI5MSIvPgo8L3N2Zz4K
managementKnowledge: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjcuMTg3NSA3NS4wMzAyQzY3LjE4NzUgODEuNDg0MiA2MS45NTQgODYuNzE3NyA1NS41IDg2LjcxNzdDNDkuMDQ2IDg2LjcxNzcgNDMuODEyNSA4MS40ODQyIDQzLjgxMjUgNzUuMDMwMlY3MS4xMzgxSDY3LjE4NzVWNzUuMDMwMloiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTU1LjUgMjQuMzc3MkM0Mi41OTIxIDI0LjM3NzIgMzIuMTI1IDM0Ljg0NDMgMzIuMTI1IDQ3Ljc1MjJDMzIuMTI1IDUzLjc0NDQgMzQuNDAwOSA1OS4xOTc4IDM4LjExNzIgNjMuMzMxOUg3Mi44ODI4Qzc2LjU5OTEgNTkuMTk3OCA3OC44NzUgNTMuNzQ0NCA3OC44NzUgNDcuNzUyMkM3OC44NzUgMzQuODQ0MyA2OC40MDc5IDI0LjM3NzIgNTUuNSAyNC4zNzcyWiIgZmlsbD0iIzU3MUVGQSIvPgo8L3N2Zz4K
managementProject: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo=
notes: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNODMuNTQ3OSA3OC45MjI1SDI3LjU5NTJWODYuNzE3OEg4My41NDc5Vjc4LjkyMjVaIiBmaWxsPSIjMzQxMjkxIi8+CjxwYXRoIGQ9Ik02Ni41NDk3IDI2LjUyMTFMNzIuMDU4MiAzMi4wMjk1Qzc1LjEwMzcgMzUuMDc1MSA3NS4xMDM3IDQwLjAwMDggNzIuMDU4MiA0My4wNDYzTDY2LjIwODkgNDguODk1Nkw0My45Nzc0IDcxLjEyNzFIMjcuNDUyMVY1NC42MDE5TDQ5LjY4MzcgMzIuMzcwNEw1NS41MzI5IDI2LjUyMTFDNTguNTc4NSAyMy40NzU1IDYzLjUwNDIgMjMuNDc1NSA2Ni41NDk3IDI2LjUyMTFaIiBmaWxsPSIjNTcxRUZBIi8+Cjwvc3ZnPgo=
realtimeCollaboration: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSA0Ny43NTIxQzYyLjkxMDUgNDcuNzUyMSA2Ni40MDY5IDQ0LjI2NjcgNjYuNDA2OSAzOS45NTY4VjMyLjE2MTRDNjYuNDA2OSAyNy44NjI0IDYyLjkyMTUgMjQuMzY2MSA1OC42MTE1IDI0LjM2NjFIMjcuNDQxMkMyMy4xNDIyIDI0LjM2NjEgMTkuNjQ1OSAyNy44NTE0IDE5LjY0NTkgMzIuMTYxNFY2My4zMzE3TDM1LjIyNTUgNDcuNzUyMUg1OC42MDA1SDU4LjYxMTVaIiBmaWxsPSIjMzQxMjkxIi8+CjxwYXRoIGQ9Ik04My41NDc4IDU1LjU0NzZINTIuMzc3NUM0OC4wNzg1IDU1LjU0NzYgNDQuNTgyMiA1OS4wMzMgNDQuNTgyMiA2My4zNDI5VjcxLjEzODNDNDQuNTgyMiA3NS40MzcyIDQ4LjA2NzUgNzguOTMzNiA1Mi4zNzc1IDc4LjkzMzZINzUuNzUyNUw5MS4zMzIxIDk0LjUxMzNWNjMuMzQyOUM5MS4zMzIxIDU5LjA0NCA4Ny44NDY4IDU1LjU0NzYgODMuNTM2OCA1NS41NDc2SDgzLjU0NzhaIiBmaWxsPSIjNTcxRUZBIi8+Cjwvc3ZnPgo=
realtimeVideoconference: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSAzMi4xNzI1SDI3LjQ1MjJDMjMuMTQ2OSAzMi4xNzI1IDE5LjY1NjkgMzUuNjYyNiAxOS42NTY5IDM5Ljk2NzlWNzEuMTI3MkMxOS42NTY5IDc1LjQzMjUgMjMuMTQ2OSA3OC45MjI1IDI3LjQ1MjIgNzguOTIyNUg1OC42MTE1QzYyLjkxNjggNzguOTIyNSA2Ni40MDY5IDc1LjQzMjUgNjYuNDA2OSA3MS4xMjcyVjM5Ljk2NzlDNjYuNDA2OSAzNS42NjI2IDYyLjkxNjggMzIuMTcyNSA1OC42MTE1IDMyLjE3MjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05MS4zNDMxIDcyLjY4ODJDODEuODc2NSA3Mi42ODgyIDc0LjIwMjEgNjUuMDEzOSA3NC4yMDIxIDU1LjU0NzNDNzQuMjAyMSA0Ni4wODA4IDgxLjg3NjUgMzguNDA2NCA5MS4zNDMxIDM4LjQwNjRWNzIuNjg4MloiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg==
selfserviceChangepassword: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
selfserviceEditprofile: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
selfserviceProtectaccount: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg==
portalTitleDE: Portal - openDesk
portalTitleEN: Portal - openDesk
portaltileGroupFileshare:
- cn=managed-by-attribute-Fileshare,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupGroupware:
- cn=managed-by-attribute-Groupware,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupLiveCollaboration:
- cn=managed-by-attribute-Livecollaboration,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupManagementKnowledge:
- cn=managed-by-attribute-Knowledgemanagement,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupManagementLearn:
- cn=managed-by-attribute-Learnmanagement,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupManagementProject:
- cn=managed-by-attribute-Projectmanagement,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupNotes:
- cn=managed-by-attribute-Notes,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupUserAdmin:
- cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal
- cn=Support,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupUserAll:
- cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal
- cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupUserStandard:
- cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal
portaltileGroupVideoconference:
- cn=managed-by-attribute-Videoconference,cn=groups,dc=swp-ldap,dc=internal
readonlyUserPassword: '9fbafb70b3be33694fe8409400f3843ef6b9dd06'
showUmc: 'true'
subDomainsKeycloak: 'id'
svcPortalServerUserPassword: fe6ca21673a27ff0c1741c00a1873cd3017c2cf8
systemInformation:
deployDate: 'Deployed: 2025-05-10T21:07:43+0200'
releaseVersion: 'Release: v1.3.2'
udmCustomFinalizer: []
udmCustomInitializer: []
---
# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-stack-data-ums-svc-portal-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
type: Opaque
stringData:
password: "fe6ca21673a27ff0c1741c00a1873cd3017c2cf8"
---
# Source: nubus/charts/nubusStackDataUms/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-stack-data-ums"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
type: Opaque
stringData:
udm_secret: ""
---
# Source: nubus/charts/nubusUdmListener/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: ums-provisioning-udm-listener
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-udm-listener
helm.sh/chart: nubusUdmListener-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
data:
ldap_secret: ""
ca_cert: ""
...
---
# Source: nubus/charts/nubusUmcServer/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: ums-umc-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
stringData:
ldap_secret:
machine_secret:
ca_cert: ""
cert_pem:
private_key:
db_password: ""
memcached_password: ""
smtp_password: ""
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-opendesk-portal-server-central-navigation"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "1e2eb0fc3815d766ef1be11fb4edba676856ba52"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-opendesk-guardian-client-secret"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
managementApiClientSecret: "cdfd791d2b9460c15334d4b8e46df698b3e3bd9f"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-opendesk-keycloak-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
admin_password: "81d3190e7a7467137ccb11c6fdd2c296986275db"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-keycloak-postgresql-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
keycloakDatabasePassword: "2a27e8e8f1148830c04a97d765173021337b738e"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-guardian-postgresql-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
guardianDatabasePassword: "37b03322fc23defff213fe18e95448bd27f92652"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-notifications-api-postgresql-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "d1f34090031fd52de9518c2665090822a0d1e17b"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-umc-server-postgresql-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
umcServerDatabasePassword: "09af664fe11f675880a6dc980f0276f70d001104"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-umc-server-memcached-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
umcServerMemcachedPassword: ""
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-keycloak-extensions-postgresql-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
umcKeycloakExtensionsDatabasePassword: "a7125d58b42fc935fd603c362ddecbfafd92bca0"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-keycloak-extensions-smtp-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
umcKeycloakExtensionsSmtpPassword: "1884bda7fb31c726adcd094399ab63319e9ca56f"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-keycloak-bootstrap-ldap-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "6f85092e969e10c851eef49367019d1e02a4a8a0"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-portal-server-minio-opendesk-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
access-key-id: "ums_user"
secret-key-id: "915f15805278ef774a1cf3abfa6b8623c1fa4544"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-umc-server-smtp-credentials-custom"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "1884bda7fb31c726adcd094399ab63319e9ca56f"
...
---
# Source: nubus/templates/extraSecrets.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "ums-provisioning-ox-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ox-connector.json: "{ \"name\": \"ox-connector\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"oxmail/oxcontext\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/accessprofile\"}, {\"realm\": \"udm\", \"topic\": \"users/user\"}, {\"realm\": \"udm\", \"topic\": \"oxresources/oxresources\"}, {\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/functional_account\"}], \"request_prefill\": true, \"password\": \"5b25d2be2690ee3acf32a4f93006e8010ff4bbd2\" }"
...
---
# Source: nubus/templates/nubusMinioProvisioningSecrets.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH---
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "nubus-minio-provisioning"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
portal-consumer-user: "username=ums_user\npassword=915f15805278ef774a1cf3abfa6b8623c1fa4544\ndisabled=false\npolicies=nubus-readwrite\nsetPolicies=false"
portal-server-user: "username=ums_user\npassword=915f15805278ef774a1cf3abfa6b8623c1fa4544\ndisabled=false\npolicies=nubus-read\nsetPolicies=false"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-nubus-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
administrator_password: "937393b22852fc828b0d68283dddcb9f8fb97411"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-postgresql-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
admin_password: "5766e50d31dcf035c440e207b6a70f8cdbb73f6c"
replication_password: "d31873679d935c4d8a2780f4ef358098dbf72409"
user_password: "44f4bfadb6c82d4b7632d7b155a931fa4fd326b4"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-ldap-server-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
adminPassword: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
admin_password: "706676bc3cd8c020813f4a97beac99a44b45484f"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-minio-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
root-password: "62c6470f313bec082fc99d7a35fc3c5ae47b3f94"
root-user: "admin"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-consumer-minio-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
accessKey: "ums_user"
secretKey: "915f15805278ef774a1cf3abfa6b8623c1fa4544"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-server-minio-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
accessKey: "ums_user"
secretKey: "915f15805278ef774a1cf3abfa6b8623c1fa4544"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-server-central-navigation-shared-secret"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "91bad5c377c1eb2610b68790571f5afee8570bd2"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-umc-server-postgresql-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "33ece5da171ae2827d8b664332565a870a425775"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-notifications-api-postgresql-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "c071f4f6d38c633b570e8e0ae6411b907794ee29"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-postgresql-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "d9854482f04c2af2e4c9b432423160b7f1f4093f"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-extensions-postgresql-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "3a8d434286750942928391011fe07f41574aa481"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-extensions-keycloak-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "706676bc3cd8c020813f4a97beac99a44b45484f"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-extensions-smtp-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "3a8d434286750942928391011fe07f41574aa481"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-bootstrap-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "9fbafb70b3be33694fe8409400f3843ef6b9dd06"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-keycloak-bootstrap-keycloak-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "706676bc3cd8c020813f4a97beac99a44b45484f"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-udm-listener-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-stack-data-swp-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-selfservice-listener-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967"
machine.secret: "b63d4de0d8766a932cad776066f76211906f8967"
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-udm-rest-api-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-self-service-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "937393b22852fc828b0d68283dddcb9f8fb97411"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-umc-server-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967"
machine.secret: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-stack-data-udm-rest-api-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-umc-server-udm-rest-api-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-consumer-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967"
machine.secret: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-listener-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967"
machine.secret: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-consumer-udm-rest-api-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-readonly-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "7edb027e32df3da6b956102c4c5367bfe1a9ab86"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-events-and-consumer-api-nats-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "95d501c0387cf0eec31aa80bb17f95f830a6251d"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-dispatcher-nats-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "b4b9a0246a4ad460f600be8b77af5861cde06201"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-prefill-nats-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-transformer-nats-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
NATS_PASSWORD: "89a6741df85e8725261ad4fcc3c49ac7af505252"
NATS_USER: udmtransformer
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-transformer-api-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93"
EVENTS_USERNAME_UDM: udm
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-transformer-ldap-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
LDAP_BIND_PW: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-selfservice-listener-nats-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "c499b4d4ffc11d4d8f9f12656e4336bd915b5cde"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-udm-rest-api-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967"
machine.secret: "b63d4de0d8766a932cad776066f76211906f8967"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-umc-server-memcached-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
memcached-password: "33ece5da171ae2827d8b664332565a870a425775"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-umc-server-smtp-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "33ece5da171ae2827d8b664332565a870a425775"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-umc-server-ldap-tls"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ca.crt:
tls.crt:
tls.key:
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-consumer-ldap-tls"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ca.crt:
tls.crt:
tls.key:
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-listener-ldap-tls"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ca.crt:
tls.crt:
tls.key:
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-selfservice-listener-ldap-tls"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ca.crt:
tls.crt:
tls.key:
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-nats-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
admin_password: "f076a4d9fceeea85cfb81f8769f3adf01e07bdc5"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-api-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ADMIN_NATS_PASSWORD: "f076a4d9fceeea85cfb81f8769f3adf01e07bdc5"
ADMIN_NATS_USER: admin
ADMIN_PASSWORD: "cb586a0ffaae0ed919024f900f871979bbcd1521"
ADMIN_USERNAME: admin
EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93"
EVENTS_USERNAME_UDM: udm
NATS_PASSWORD: "95d501c0387cf0eec31aa80bb17f95f830a6251d"
NATS_USER: api
PREFILL_PASSWORD: "b9a5a15f7e8c3101852f76d50e55ca9c9da7de10"
PREFILL_USERNAME: prefill
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-dispatcher-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
NATS_PASSWORD: "b4b9a0246a4ad460f600be8b77af5861cde06201"
NATS_USER: dispatcher
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-prefill-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
NATS_PASSWORD: "9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d"
NATS_USER: prefill
PREFILL_PASSWORD: "b9a5a15f7e8c3101852f76d50e55ca9c9da7de10"
PREFILL_USERNAME: prefill
UDM_PASSWORD: "b63d4de0d8766a932cad776066f76211906f8967"
UDM_USERNAME: cn=admin
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-listener-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93"
EVENTS_USERNAME_UDM: udm
NATS_PASSWORD: "0acadb5b0a2e885081a0ad98d44c0884c6aa517e"
NATS_USER: udmlistener
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-udm-transformer-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93"
EVENTS_USERNAME_UDM: udm
NATS_PASSWORD: "89a6741df85e8725261ad4fcc3c49ac7af505252"
NATS_USER: udmtransformer
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-register-consumers-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ADMIN_PASSWORD: "cb586a0ffaae0ed919024f900f871979bbcd1521"
ADMIN_USERNAME: admin
UDM_PASSWORD: "b63d4de0d8766a932cad776066f76211906f8967"
UDM_USERNAME: cn=admin
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-selfservice-listener-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
NATS_PASSWORD: "c499b4d4ffc11d4d8f9f12656e4336bd915b5cde"
NATS_USER: selfservice
PROVISIONING_API_PASSWORD: "903594f7a3da64ac8573b35933f0546f2fb4d1e0"
UMC_ADMIN_PASSWORD: "937393b22852fc828b0d68283dddcb9f8fb97411"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-portal-consumer-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
PROVISIONING_API_PASSWORD: "285e53cfa767e8788935963e6d60186f31a36879"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-provisioning-register-consumers-json-secrets"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
ox-connector.json: "{ \"name\": \"ox-connector\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"oxmail/oxcontext\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/accessprofile\"}, {\"realm\": \"udm\", \"topic\": \"users/user\"}, {\"realm\": \"udm\", \"topic\": \"oxresources/oxresources\"}, {\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/functional_account\"}], \"request_prefill\": true, \"password\": \"5b25d2be2690ee3acf32a4f93006e8010ff4bbd2\" }"
portal-consumer.json: "{ \"name\": \"portal-consumer\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"portals/portal\"}, {\"realm\": \"udm\", \"topic\": \"portals/category\"}, {\"realm\": \"udm\", \"topic\": \"portals/entry\"}, {\"realm\": \"udm\", \"topic\": \"portals/folder\"}, {\"realm\": \"udm\", \"topic\": \"portals/announcement\"}], \"request_prefill\": false, \"password\": \"285e53cfa767e8788935963e6d60186f31a36879\" }"
selfservice.json: "{ \"name\": \"selfservice\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"users/user\"}], \"request_prefill\": true, \"password\": \"903594f7a3da64ac8573b35933f0546f2fb4d1e0\" }"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-guardian-keycloak-client-secret"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
oauthAdapterM2mSecret: "109f406de749f9d8588bc4144c738143023def37"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-guardian-udm-secret"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
udmDataAdapterPassword: "b63d4de0d8766a932cad776066f76211906f8967"
udmDataAdapterUsername: cn=admin
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-guardian-provisioning-secret"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
adminPassword: "706676bc3cd8c020813f4a97beac99a44b45484f"
managementApiClientSecret: "109f406de749f9d8588bc4144c738143023def37"
...
---
# Source: nubus/templates/nubusSecrets.yaml
kind: "Secret"
apiVersion: "v1"
type: "Opaque"
metadata:
name: "ums-guardian-management-api-postgresql-credentials"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
stringData:
password: "9e1704c5a20a9a0e781f4537e37395663e1299fb"
...
---
# Source: nubus/charts/keycloak/templates/configmap.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: "ums-keycloak"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak
helm.sh/chart: keycloak-0.9.2
data:
KEYCLOAK_PASSWORD_CHANGE_ENDPOINT: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
KC_LOG_LEVEL: "INFO"
KC_HOSTNAME: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
KC_PROXY: "edge"
KC_DB: "postgres"
# https://www.keycloak.org/server/caching
KC_CACHE: "ispn"
# https://www.keycloak.org/server/caching#_available_transport_stacks
KC_CACHE_STACK: "kubernetes"
KC_METRICS_ENABLED: "true"
KC_HOSTNAME_BACKCHANNEL_DYNAMIC: "true"
KC_DB_URL_HOST: "postgresql"
KC_DB_URL_PORT: "5432"
KC_DB_URL_DATABASE: "keycloak"
UNIVENTION_THEME: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/theme.css"
UNIVENTION_CUSTOM_THEME: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/css/custom.css"
UNIVENTION_FAVICON: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/favicon.ico"
CACHE_OWNERS_COUNT: "1"
CACHE_OWNERS_AUTH_SESSIONS_COUNT: "1"
# Needed for the headless service
PROXY_ADDRESS_FORWARDING: "true"
JAVA_OPTS_APPEND: -Djgroups.dns.query=ums-keycloak.yschmidt-opendesk-argo.svc.cluster.local
...
---
# Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-guardian-authorization-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: guardian
helm.sh/chart: nubusGuardian-0.17.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "2.0.0"
data:
HOME: "/guardian_service_dir"
GUARDIAN__AUTHZ__CORS__ALLOWED_ORIGINS: "*"
GUARDIAN__AUTHZ__ADAPTER__SETTINGS_PORT: "env"
GUARDIAN__AUTHZ__ADAPTER__PERSISTENCE_PORT: "udm_data"
GUARDIAN__AUTHZ__ADAPTER__POLICY_PORT: "opa"
GUARDIAN__AUTHZ__ADAPTER__AUTHENTICATION_PORT: "fast_api_oauth"
IS_UNIVENTION_APPCENTER: "0"
UDM_DATA_ADAPTER__URL: "http://ums-udm-rest-api:9979/udm/"
UDM_DATA_ADAPTER__USERNAME_FILE: "/var/secrets/udmDataAdapterUsername"
UDM_DATA_ADAPTER__PASSWORD_FILE: "/var/secrets/udmDataAdapterPassword"
OPA_ADAPTER__URL: "http://ums-guardian-open-policy-agent/"
GUARDIAN__AUTHZ__LOGGING__LEVEL: "INFO"
GUARDIAN__AUTHZ__LOGGING__STRUCTURED: "true"
GUARDIAN__AUTHZ__LOGGING__FORMAT: "{time:YYYY-MM-DD HH:mm:ss.SSS ZZ} | {level} | {message} | {extra}"
OAUTH_ADAPTER__WELL_KNOWN_URL: "http://ums-keycloak:8080/realms/opendesk/.well-known/openid-configuration"
...
---
# Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-guardian-nginx-conf
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: guardian
helm.sh/chart: nubusGuardian-0.17.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "2.0.0"
data:
nginx.conf: |
server {
listen 8080;
listen [::]:8080;
server_name management-ui;
root /app;
location /univention/guardian/management-ui {
alias /app/;
try_files $uri /index.html;
}
location /univention/guardian/management-ui/favicon.ico {
alias /app/favicon.ico;
try_files $uri =404;
}
location /univention/guardian/management-ui/config.json {
alias /app/config/config.json;
try_files $uri =404;
}
location /univention/guardian/management-ui/assets/ {
alias /app/assets/;
try_files $uri =404;
}
}
...
---
# Source: nubus/charts/nubusGuardian/templates/configmap-management-api.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-guardian-management-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: guardian
helm.sh/chart: nubusGuardian-0.17.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "2.0.0"
data:
HOME: "/guardian_service_dir"
GUARDIAN__MANAGEMENT__CORS__ALLOWED_ORIGINS: "*"
GUARDIAN__MANAGEMENT__ADAPTER__SETTINGS_PORT: "env"
GUARDIAN__MANAGEMENT__ADAPTER__APP_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__CONDITION_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__CONTEXT_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__NAMESPACE_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__PERMISSION_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__ROLE_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__CAPABILITY_PERSISTENCE_PORT: "sql"
GUARDIAN__MANAGEMENT__ADAPTER__AUTHENTICATION_PORT: "fast_api_oauth"
GUARDIAN__MANAGEMENT__ADAPTER__AUTHORIZATION_API_URL: "http://ums-guardian-authorization-api/guardian/authorization"
GUARDIAN__MANAGEMENT__ADAPTER__RESOURCE_AUTHORIZATION_PORT: "guardian"
# NOTE: Seems to be only used during stopping the containers for univention-app command
# We can probably drop it, since it is used on some bash termiation script
IS_UNIVENTION_APPCENTER: "0"
OAUTH_ADAPTER__WELL_KNOWN_URL: "http://ums-keycloak:8080/realms/opendesk/.well-known/openid-configuration"
OAUTH_ADAPTER__M2M_SECRET_FILE: "/var/secrets/oauthAdapterM2mSecret"
GUARDIAN__MANAGEMENT__LOGGING__LEVEL: "DEBUG"
GUARDIAN__MANAGEMENT__LOGGING__STRUCTURED: "true"
GUARDIAN__MANAGEMENT__LOGGING__FORMAT: "{time:YYYY-MM-DD HH:mm:ss.SSS ZZ} | {level} | {message} | {extra}"
GUARDIAN__MANAGEMENT__BASE_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
SQL_PERSISTENCE_ADAPTER__DIALECT: "postgresql"
SQL_PERSISTENCE_ADAPTER__HOST: "postgresql"
SQL_PERSISTENCE_ADAPTER__PORT: "5432"
SQL_PERSISTENCE_ADAPTER__USERNAME: "guardianmanagementapi_user"
SQL_PERSISTENCE_ADAPTER__DB_NAME: "guardianmanagementapi"
...
---
# Source: nubus/charts/nubusGuardian/templates/configmap-management-ui.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-guardian-management-ui
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: guardian
helm.sh/chart: nubusGuardian-0.17.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "2.0.0"
data:
VITE__MANAGEMENT_UI__ADAPTER__AUTHENTICATION_PORT: "keycloak"
VITE__MANAGEMENT_UI__ADAPTER__DATA_PORT: "api"
VITE__API_DATA_ADAPTER__URI: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/guardian/management"
VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__SSO_URI: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__REALM: "opendesk"
VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__CLIENT_ID: "guardian-ui"
...
---
# Source: nubus/charts/nubusGuardian/templates/configmap-open-policy-agent.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-guardian-open-policy-agent
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: guardian
helm.sh/chart: nubusGuardian-0.17.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "2.0.0"
data:
IS_UNIVENTION_APPCENTER: "0"
OPA_DATA_BUNDLE: "bundles/GuardianDataBundle.tar.gz"
OPA_POLICY_BUNDLE: "bundles/GuardianPolicyBundle.tar.gz"
OPA_POLLING_MIN_DELAY: "10"
OPA_POLLING_MAX_DELAY: "15"
OPA_GUARDIAN_MANAGEMENT_URL: "http://ums-guardian-management-api/guardian/management"
...
---
# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-keycloak-bootstrap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak-bootstrap
helm.sh/chart: nubusKeycloakBootstrap-0.10.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
annotations:
argocd.argoproj.io/hook: Sync
data:
DEBUG: "false"
DOMAIN: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
SUBDOMAIN_PORTAL: "portal"
KEYCLOAK_HOST: "ums-keycloak"
KEYCLOAK_REALM: "opendesk"
KEYCLOAK_URL: "http://ums-keycloak:8080"
UNIVENTION_KEYCLOAK_BOOTSTRAP_TEMP_DIR: "/tmp"
UNIVENTION_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START: "0"
LDAP_BASE_DN: "dc=swp-ldap,dc=internal"
LDAP_URI: "ldap://ums-ldap-server:389"
SAML_SERVICE_PROVIDER_HOSTNAME: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
...
---
# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-keycloak-bootstrap-bootstrap-data"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak-bootstrap
helm.sh/chart: nubusKeycloakBootstrap-0.10.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
annotations:
argocd.argoproj.io/hook: Sync
data:
ldap.mappers.yaml: |
- ldapAndUserModelAttributeName: opendeskProjectmanagementAdmin
- ldapAndUserModelAttributeName: oxContextIDNum
loginlinks.yaml: |
- link_number: 1
language: "de"
description: "Passwort vergessen?"
href: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/#/selfservice/passwordforgotten"
- link_number: 1
language: "en"
description: "Forgot password?"
href: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/#/selfservice/passwordforgotten"
2fa.yaml: |
enabled: true
group: 2fa-users
...
---
# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-keycloak-bootstrap-init
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak-bootstrap
helm.sh/chart: nubusKeycloakBootstrap-0.10.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
annotations:
argocd.argoproj.io/hook: Sync
data:
KEYCLOAK_URL: "http://ums-keycloak:8080/realms/master"
wait-for-keycloak.py: |
#!/usr/bin/python3
import requests
import time
import sys
import os
keycloak_url = os.environ.get('KEYCLOAK_URL')
max_retries = 300
retries = 0
for retry in range(max_retries):
try:
response = requests.get(keycloak_url)
if response.status_code == 200:
print('Keycloak is available')
sys.exit(0)
elif response.status_code == 404:
print('Realm not ready')
else:
print('Unexpected response code: ', response.status_code)
except requests.exceptions.ConnectionError:
print('Could not reach keycloak, retrying...')
time.sleep(1)
sys.exit(1)
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-keycloak-extensions-handler
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-handler
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
data:
KC_AUTH_URL: "http://ums-keycloak:8080/admin"
KC_REALM: "opendesk"
KC_USER_REALM: "master"
POSTGRES_HOST: "postgresql"
POSTGRES_PORT: "5432"
POSTGRES_DATABASE_NAME: "keycloak_extensions"
LOG_LEVEL: "WARN"
FAILED_ATTEMPTS_FOR_IP_BLOCK: "7"
FAILED_ATTEMPTS_FOR_DEVICE_BLOCK: "5"
FAILED_ATTEMPTS_FOR_CAPTCHA_TRIGGER: "3"
EVENTS_RETENTION_PERIOD: "1"
AUTO_EXPIRE_RULE_IN_MINS: "1"
DEVICE_PROTECTION_ENABLE: "True"
IP_PROTECTION_ENABLE: "True"
CAPTCHA_PROTECTION_ENABLE: "False"
NEW_DEVICE_LOGIN_NOTIFICATION_ENABLE: "True"
NEW_DEVICE_LOGIN_SUBJECT: "New device login on your openDesk account"
SMTP_HOST: "postfix.yschmidt-opendesk-argo.svc.cluster.local"
SMTP_PORT: "25"
SMTP_AUTH_ENABLED: "true"
SMTP_SSL_ENABLED: "false"
SMTP_STARTTLS_ENABLED: "false"
MAIL_FROM: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml
apiVersion: "v1"
kind: ConfigMap
metadata:
name: ums-keycloak-extensions-proxy
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-proxy
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
data:
KEYCLOAK_URL: "http://ums-keycloak:8080"
KC_AUTH_URL: "http://ums-keycloak:8080/admin"
KC_REALM: "opendesk"
KC_USER_REALM: "master"
POSTGRES_HOST: "postgresql"
POSTGRES_PORT: "5432"
POSTGRES_DATABASE_NAME: "keycloak_extensions"
POSTGRES_SSL: "false"
CAPTCHA_SITE_KEY: ""
CAPTCHA_SECRET_KEY: ""
LOG_LEVEL: "info"
---
# Source: nubus/charts/nubusLdapNotifier/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-ldap-notifier"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-notifier
helm.sh/chart: nubusLdapNotifier-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "14.0.4"
data:
ENVIRONMENT: "production"
LDAP_SERVER_UID: "101"
LDAP_SERVER_GID: "102"
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-primary
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
PRIMARY_LDAP_URI: "ldap://ums-ldap-server-primary"
PRIMARY_SERVICE: "ums-ldap-server-primary"
LDAP_BASEDN: "dc=swp-ldap,dc=internal"
LDAP_SERVER_ENABLE_STATUS_CONFIGMAP: "true"
LDAP_SERVER_ROLE: "primary"
SYNC_USER_DN: "cn=admin,dc=swp-ldap,dc=internal"
ADMIN_DN: "cn=admin,dc=swp-ldap,dc=internal"
LDAP_PORT: "389"
LDAP_PROTOCOL: "ldap"
REPLICACOUNT: "2"
ENABLE_SOCKET_OVERLAY: "false"
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-primary-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
append-slapd.conf.sh: |
#!/usr/bin/env bash
set -euo pipefail
# Export the SERVERID
export SERVERID=$(echo "${HOSTNAME}" | awk -F '-' '{print $(NF)+1}')
# Determine the PRIMARY_LDAP_URI based on the trailing digit of the HOSTNAME
trailing_digit=$(echo "${HOSTNAME}" | awk -F '-' '{print $(NF)}')
replicacount="${REPLICACOUNT}"
if [[ "${replicacount}" -eq 2 ]]; then
if [[ "${trailing_digit}" -eq 0 ]]; then
export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-1:${LDAP_PORT}"
else
export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0:${LDAP_PORT}"
fi
else
if [[ "${trailing_digit}" -eq 0 ]]; then
export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((replicacount - 1)):${LDAP_PORT}"
elif [[ "${trailing_digit}" -eq $((replicacount - 1)) ]]; then
export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0:${LDAP_PORT}"
else
export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((trailing_digit - 1)):${LDAP_PORT}"
fi
fi
# Read the slapd.conf.tpl file
template=$(cat /config/templates/slapd.conf.tpl)
# Replace placeholders with environment variable values using sed and eval
while IFS=$'\n' read -r line; do
# Skip empty lines
if [[ -z "${line}" ]]; then
continue
fi
# Get the leading spaces from the line
leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p')
# Evaluate the line to expand any environment variables
evaluated_line=$(eval echo "${line}")
# Prepend the leading spaces to the evaluated line
evaluated_line="${leading_spaces}${evaluated_line}"
# Escape special characters in the line
escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g')
# Replace the line in the template with the evaluated line, preserving indentation
template=$(echo "${template}" | sed "s|^${escaped_line}|${evaluated_line}|")
done < <(echo "${template}")
# Read the existing slapd.conf file
slapd_conf=$(cat /etc/ldap/slapd.conf)
# Initialize an empty modified slapd.conf file
modified_slapd_conf="serverID ${SERVERID}\n"
# Initialize the replication ID counter
replication_id=1
# Initialize the suffix variable
suffix=""
# Process the slapd.conf file line by line
while IFS=$'\n' read -r line; do
# Append the current line to the modified slapd.conf
modified_slapd_conf+="${line}\n"
# Check if the current line starts with "modulepath" and append the moduleload for back_sock.so
if [[ "${line}" =~ ^modulepath ]] && [[ "${ENABLE_SOCKET_OVERLAY}" == "true" ]]; then
modified_slapd_conf+="moduleload back_sock.so\n"
line="moduleload back_ldap.so\n"
fi
# Check if the current line starts with "suffix"
if [[ "${line}" =~ ^suffix ]]; then
# Extract the suffix value
suffix=$(echo "${line}" | awk '{print $2}' | tr -d '"')
fi
# The ucs based slapd.conf does not allow for networked admin access to cn=internal, this adds it.
# Check if the current line contains 'by sockname="PATH=/var/run/slapd/ldapi" write', if true, append the acl.
if ([[ "${suffix}" == "cn=internal" ]] || [[ "${suffix}" == "cn=translog" ]]) && echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then
echo "The suffix is ${suffix} and this line contains the socket acl."
echo "Line: ${line}"
# Append the syncrepl configuration to the modified slapd.conf
modified_slapd_conf+=" by dn=\"cn=admin,${LDAP_BASEDN}\" write\n"
fi
# The ucs based slapd.conf does not allow for networked admin access to cn=internal and does not specify a rootdn, this adds both.
# Check if the current line contains 'cn=translog', if true, append a roodn entry and the syncrepl configuration.
if echo "${line}" | grep -q '^.*suffix.*cn=translog.*'; then
echo "The suffix is ${suffix} and this line contains the cn=translog suffix."
echo "Line: ${line}"
# Append the syncrepl configuration to the modified slapd.conf
modified_slapd_conf+="rootdn \"cn=admin,${LDAP_BASEDN}\"\n"
# Set the line to the rootdn line so the following syncrepl configuration is added after it.
line="rootdn \"cn=admin,${LDAP_BASEDN}\"\n"
fi
# Check if the current line starts with "rootdn"
if [[ "${line}" =~ ^rootdn ]]; then
# Generate the syncrepl configuration with the current replication ID and suffix
syncrepl_config=$(echo "${template}" | sed "s/PLACEHOLDER_REPLICATION_ID/${replication_id}/" | sed "s|PLACEHOLDER_LDAP_BASEDN|${suffix}|")
# Append the syncrepl configuration to the modified slapd.conf, preserving indentation
modified_slapd_conf+="${syncrepl_config}\n"
# Increment the replication ID
replication_id=$((replication_id + 1))
fi
if [[ "${line}" =~ ^suffix ]] && [[ "${suffix}" == "${LDAP_BASEDN}" ]] && [[ "${ENABLE_SOCKET_OVERLAY}" == "true" ]]; then
modified_slapd_conf+=$(cat /config/templates/slapd.conf.socket_overlay.tpl)
fi
done < <(echo "${slapd_conf}")
# Write the modified slapd.conf
echo -e "${modified_slapd_conf}" > /etc/ldap/slapd.conf
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-primary-config-templates
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
slapd.conf.tpl: |
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
syncrepl rid=00PLACEHOLDER_REPLICATION_ID
provider=$PRIMARY_LDAP_URI
type=refreshAndPersist
interval=00:00:00:10
network-timeout=0
timeout=1
searchbase="PLACEHOLDER_LDAP_BASEDN"
bindmethod=simple
binddn="$SYNC_USER_DN"
credentials=$SYNC_PASSWORD
schemachecking=on
scope=sub
retry="60 +"
multiprovider on
slapd.conf.socket_overlay.tpl: |
overlay sock
extensions binddn connid peername
socketpath /var/lib/univention-ldap/slapd-sock/sock
sockops add delete modify modrdn
sockresps extendedresult
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-proxy
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
PRIMARY_LDAP_URI: "ldap://ums-ldap-server-primary"
SECONDARY_LDAP_URI: "ldap://ums-ldap-server-secondary"
LDAP_BASEDN: "dc=swp-ldap,dc=internal"
LDAP_SERVER_ROLE: "proxy"
ADMIN_DN: "cn=admin,dc=swp-ldap,dc=internal"
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-proxy-config-templates
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
slapd.conf-proxy.tpl: |
PLACEHOLDER_SCHEMAS
attributeoptions "entry-" "lang-"
moduleload constraint.so
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/ldap
moduleload back_ldap.so
database ldap
suffix "dc=swp-ldap,dc=internal"
overlay constraint
constraint_attribute uidNumber regex ^[^0]+[0-9]*$
constraint_attribute gidNumber regex ^[^0]+[0-9]*$
moduleload memberof.so
overlay memberof
memberof-group-oc posixGroup
memberof-member-ad uniqueMember
memberof-memberof-ad memberOf
memberof-dangling ignore
memberof-refint false
uri ldap://ums-ldap-server-secondary
lastmod on
chase-referrals yes
rebind-as-user yes
# idassert-bind mode=self bindmethod=simple
# binddn="cn=admin,dc=swp-ldap,dc=internal"
# credentials="PLACEHOLDER_LDAP_CN_ADMIN_PW"
# tls_reqcert=never
# idassert-passthru "dn.regex:.*"
authz-regexp
uid=([^,]*),cn=(gssapi|saml|oauthbearer),cn=auth
ldap:///PLACEHOLDER_LDAP_BASEDN??sub?uid=$1
access to * by * read
# database ldap
# suffix "cn=translog"
# overlay constraint
# uri ldap://ums-ldap-server-secondary
# lastmod on
# chase-referrals yes
# rebind-as-user yes
# idassert-passthru "dn.regex:.*"
# access to * by * read
sasl-secprops none,minssf=0
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-proxy-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
wait-for-secondary.sh: |
#!/bin/bash
set -uo pipefail
echo "Waiting for secondary LDAP to be available ..."
retry_interval=5
error=1
while [ $error -ne 0 ]; do
(set +x; ldapsearch -H "${SECONDARY_LDAP_URI}" -x -D "${ADMIN_DN}" -w "${LDAP_CN_ADMIN_PW}" -b "${LDAP_BASEDN}" -s base >/dev/null 2>&1)
error=$?
if [ $error -eq 49 ]; then
echo "Failed to authenticate with secondary LDAP at '${SECONDARY_LDAP_URI}' using binddn '${ADMIN_DN}' , retrying in ${retry_interval} seconds ..."
else
echo "Secondary LDAP not available at '${SECONDARY_LDAP_URI}' yet, errorcode was '$error', retrying in ${retry_interval} seconds ..."
fi
sleep ${retry_interval}
done
generate-slapd.conf.sh: |
#!/usr/bin/env bash
set -euo pipefail
# Read the existing slapd.conf file
slapd_conf=$(cat /etc/ldap/slapd.conf)
# Initialize the schema_definition_lines variable
schema_definition_lines=""
# Process the slapd.conf file line by line
while IFS=$'\n' read -r line; do
# Check if the current line starts with "include" and append the moduleload for back_ldap.so
if [[ "${line}" =~ ^include ]]; then
schema_definition_lines+="${line}\n"
fi
done < <(echo "${slapd_conf}")
echo "Schema definitions: ${schema_definition_lines}\n"
# Read the slapd.conf-proxy.tpl file
template=$(cat /config/templates/slapd.conf-proxy.tpl)
# Initialize the generated slapd.conf variable
generated_slapd_conf=""
# Replace placeholders with environment variable values using sed and eval
while IFS=$'\n' read -r line; do
# Skip empty lines
if [[ -z "${line}" ]]; then
continue
fi
# Check if the current line contains the placeholder for the schema definitions and append the schema definitions
if [[ "${line}" =~ ^PLACEHOLDER_SCHEMAS ]]; then
echo "Found placeholder line. Appending schema definitions."
generated_slapd_conf+="${schema_definition_lines}\n"
continue
fi
PLACEHOLDER_LDAP_CN_ADMIN_PW=$(echo "${LDAP_CN_ADMIN_PW}" | sed 's/[&/\]/\\&/g')
modified_line=$(echo "${line}" | sed "s|PLACEHOLDER_LDAP_CN_ADMIN_PW|${PLACEHOLDER_LDAP_CN_ADMIN_PW}|g" | sed "s|PLACEHOLDER_LDAP_BASEDN|${LDAP_BASEDN}|g")
generated_slapd_conf+="${modified_line}\n"
done < <(echo "${template}")
# Write the modified slapd.conf
echo -e "${generated_slapd_conf}" > /etc/ldap/slapd.conf
slaptest -f /etc/ldap/slapd.conf
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-secondary
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
PRIMARY_LDAP_URI: "ldap://ums-ldap-server-primary"
LDAP_BASEDN: "dc=swp-ldap,dc=internal"
LDAP_SERVER_ROLE: "secondary"
SYNC_USER_DN: "cn=admin,dc=swp-ldap,dc=internal"
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-secondary-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
wait-for-primary.sh: |
#!/bin/bash
set -uo pipefail
echo "Waiting for primary LDAP to be available ..."
retry_interval=5
error=1
while [ $error -ne 0 ]; do
(set +x; ldapsearch -H "${PRIMARY_LDAP_URI}" -x -D "${SYNC_USER_DN}" -w "${LDAP_CN_ADMIN_PW}" -b "${LDAP_BASEDN}" -s base >/dev/null 2>&1)
error=$?
if [ $error -eq 49 ]; then
echo "Failed to authenticate with primary LDAP at '${PRIMARY_LDAP_URI}' using binddn '${ADMIN_DN}' , retrying in ${retry_interval} seconds ..."
else
echo "Primary LDAP not available at '${PRIMARY_LDAP_URI}' yet, errorcode was '$error', retrying in ${retry_interval} seconds ..."
fi
sleep ${retry_interval}
done
append-slapd.conf.sh: |
#!/usr/bin/env bash
set -euo pipefail
# Export the SERVERID
export SERVERID=$(echo ${HOSTNAME} | awk -F '-' '{print $(NF)+1}')
# Read the slapd.conf.tpl file
template=$(cat /config/templates/slapd.conf.tpl)
# Replace placeholders with environment variable values using sed and eval
while IFS=$'\n' read -r line; do
# Skip empty lines
if [[ -z "${line}" ]]; then
continue
fi
# Get the leading spaces from the line
leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p')
# Evaluate the line to expand any environment variables
evaluated_line=$(eval echo "${line}")
# Prepend the leading spaces to the evaluated line
evaluated_line="${leading_spaces}${evaluated_line}"
# Escape special characters in the line
escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g')
# Replace the line in the template with the evaluated line, preserving indentation
template=$(echo "${template}" | sed "s|^${escaped_line}|${evaluated_line}|")
done < <(echo "${template}")
# Read the slapd.conf-chaining.tpl file
templateChaining=$(cat /config/templates/slapd.conf-chaining.tpl)
# Replace placeholders with environment variable values using sed and eval
while IFS=$'\n' read -r line; do
# Skip empty lines
if [[ -z "${line}" ]]; then
continue
fi
# Get the leading spaces from the line
leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p')
# Evaluate the line to expand any environment variables
evaluated_line=$(eval echo "${line}")
# Prepend the leading spaces to the evaluated line
evaluated_line="${leading_spaces}${evaluated_line}"
# Escape special characters in the line
escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g')
# Replace the line in the templateChaining with the evaluated line, preserving indentation
templateChaining=$(echo "${templateChaining}" | sed "s|^${escaped_line}|${evaluated_line}|")
done < <(echo "${templateChaining}")
# Read the existing slapd.conf file
slapd_conf=$(cat /etc/ldap/slapd.conf)
# Initialize an empty modified slapd.conf file
modified_slapd_conf="serverID 2${SERVERID}\n"
# Initialize the replication ID counter
replication_id=1
# Initialize the suffix variable
suffix=""
# Process the slapd.conf file line by line
while IFS=$'\n' read -r line; do
# Append the current line to the modified slapd.conf
modified_slapd_conf+="${line}\n"
# Check if the current line starts with "modulepath" and append the moduleload for back_ldap.so
if [[ "${line}" =~ ^modulepath ]]; then
modified_slapd_conf+="moduleload back_ldap.so\n"
# Add the chaining configuration to the modified slapd.conf
modified_slapd_conf+="${templateChaining}\n"
line="moduleload back_ldap.so\n"
fi
# Check if the current line starts with "suffix"
if [[ "${line}" =~ ^suffix ]]; then
# Extract the suffix value
suffix=$(echo "${line}" | awk '{print $2}' | tr -d '"')
fi
# The ucs based slapd.conf does not allow for networked admin access to cn=internal, this adds it.
# Check if the current line contains 'by sockname="PATH=/var/run/slapd/ldapi" write', if true, append the acl.
if ([[ "${suffix}" == "cn=internal" ]] || [[ "${suffix}" == "cn=translog" ]]) && echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then
# if echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then
echo "The suffix is ${suffix} and this line contains the socket acl."
echo "Line: ${line}"
# Append the syncrepl configuration to the modified slapd.conf
modified_slapd_conf+=" by dn=\"cn=admin,${LDAP_BASEDN}\" write\n"
fi
# The ucs based slapd.conf does not allow for networked admin access to cn=internal and does not specify a rootdn, this adds both.
# Check if the current line contains 'cn=translog', if true, append a roodn entry and the syncrepl configuration.
if echo "${line}" | grep -q '^.*suffix.*cn=translog.*'; then
echo "The suffix is ${suffix} and this line contains the cn=translog suffix."
echo "Line: ${line}"
# Append the syncrepl configuration to the modified slapd.conf
modified_slapd_conf+="rootdn \"cn=admin,${LDAP_BASEDN}\"\n"
# Set the line to the rootdn line so the following syncrepl configuration is added after it.
line="rootdn \"cn=admin,${LDAP_BASEDN}\"\n"
fi
# Check if the current line starts with "rootdn"
if [[ "${line}" =~ ^rootdn ]]; then
# Generate the syncrepl configuration with the current replication ID and suffix
syncrepl_config=$(echo "${template}" | sed "s/PLACEHOLDER_REPLICATION_ID/${replication_id}/"| sed "s/PLACEHOLDER_SERVER_ID/${SERVERID}/" | sed "s|PLACEHOLDER_LDAP_BASEDN|${suffix}|")
# Append the syncrepl configuration to the modified slapd.conf, preserving indentation
modified_slapd_conf+="${syncrepl_config}\n"
# Increment the replication ID
replication_id=$((replication_id + 1))
fi
done < <(echo "${slapd_conf}")
# Write the modified slapd.conf
echo -e "${modified_slapd_conf}" > /etc/ldap/slapd.conf
# slaptest -f /etc/ldap/slapd.conf
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-secondary-config-templates
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
slapd.conf.tpl: |
syncrepl rid=1PLACEHOLDER_SERVER_IDPLACEHOLDER_REPLICATION_ID
provider=$PRIMARY_LDAP_URI
type=refreshAndPersist
interval=00:00:00:10
network-timeout=0
timeout=1
searchbase="PLACEHOLDER_LDAP_BASEDN"
bindmethod=simple
binddn="$SYNC_USER_DN"
credentials=$SYNC_PASSWORD
schemachecking=off
scope=sub
retry="60 +"
updateref $PRIMARY_LDAP_URI
# overlay chain
# chain-uri $PRIMARY_LDAP_URI
# chain-idassert-bind bindmethod=simple
# binddn="$SYNC_USER_DN"
# credentials=$SYNC_PASSWORD
# mode=self
# flags=prescriptive
# chain-rebind-as-user TRUE
# chain-return-error TRUE
slapd.conf-chaining.tpl: |
# placeholder
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-ldap-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
DOMAIN_NAME: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
LDAP_BASE_DN: "dc=swp-ldap,dc=internal"
LOG_LEVEL: "stats"
SAML_METADATA_URL: "http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor"
SAML_METADATA_URL_INTERNAL: "http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor"
SERVICE_PROVIDERS: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/saml/metadata"
TLS_MODE: "off"
...
---
# Source: nubus/charts/nubusLdapServer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-ldap-server-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
data:
wait-for-saml-metadata.sh: |
#!/bin/bash
set -euo pipefail
# we have no UCR in this container, so just grep the SAML URL from the config file
UCR_FILES="/etc/univention/base-defaults.conf /etc/univention/base.conf /etc/univention/base-forced.conf"
SAML_METADATA_URL=$(grep --no-filename '^umc/saml/idp-server:' $UCR_FILES 2>/dev/null | cut --delimiter=':' --fields='2-' | tail --lines=1 | xargs || true)
SAML_METADATA_URL_INTERNAL=$(grep --no-filename '^umc/saml/idp-server-internal:' $UCR_FILES 2>/dev/null | cut --delimiter=':' --fields='2-' | tail --lines=1 | xargs || true)
DOWNLOAD_URL=${SAML_METADATA_URL_INTERNAL:-${SAML_METADATA_URL}}
echo "Checking endpoint ${DOWNLOAD_URL}."
SECONDS=0
TIMEOUT=120
while ! curl -k -o /dev/null -sf "${DOWNLOAD_URL}"; do
echo "Checking if the SAML Metadata can be downloaded from keycloak ..."
sleep 2
if (($SECONDS > $TIMEOUT)); then
echo "Giving up after $TIMEOUT seconds"
exit 1
fi
done
echo "Success, the SAML Metadata is available."
init-internal-database.sh: |
#!/bin/bash
set -uo pipefail
mkdir -p /var/lib/univention-ldap/internal
echo "dn: cn=internal
objectClass: organizationalRole
" | slapadd -b cn=internal -f /etc/ldap/slapd.conf
exit 0
...
---
# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-portal-consumer-common
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-consumer
helm.sh/chart: nubusPortalConsumer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
data:
DOMAIN_NAME: "univention.intranet"
ENVIRONMENT: "production"
LDAP_BASE_DN: "dc=swp-ldap,dc=internal"
LDAP_HOST: "ums-ldap-server-primary"
LDAP_HOST_DN: "cn=admin,dc=swp-ldap,dc=internal"
LDAP_PORT: "389"
LOG_LEVEL: "INFO"
MAX_ACKNOWLEDGEMENT_RETRIES: "3"
MACHINE_SECRET_FILE: "/var/secrets/machine_secret"
PORTAL_DEFAULT_DN: "cn=domain,cn=portal,cn=portals,cn=univention,dc=swp-ldap,dc=internal"
PORTAL_CONSUMER_LOG_STREAM: "true"
PORTAL_ASSETS_BASE_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal"
PORTAL_SERVER_ADMIN_GROUP: "cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal"
PORTAL_SERVER_ASSETS_ROOT_PATH: "portal-assets"
PORTAL_SERVER_AUTH_MODE: "saml"
PORTAL_SERVER_EDITABLE: "false"
PORTAL_SERVER_PORT: "80"
PORTAL_SERVER_UCS_INTERNAL_PATH: "portal-data"
PORTAL_SERVER_UMC_GET_URL: "http://ums-umc-server/get"
PORTAL_SERVER_UMC_SESSION_URL: "http://ums-umc-server/get/session-info"
PORTAL_UDM_API_URL: "http://ums-udm-rest-api:9979/udm/"
PORTAL_UDM_API_USERNAME: "cn=admin"
PORTAL_UDM_API_PASSWORD_FILE: "/var/secrets/machine_secret"
OBJECT_STORAGE_ENDPOINT: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OBJECT_STORAGE_BUCKET: "ums"
OBJECT_STORAGE_ACCESS_KEY_ID: "valueFrom:\n secretKeyRef:\n name: \"ums-portal-consumer-minio-credentials\"\n key: \"accessKey\""
OBJECT_STORAGE_SECRET_ACCESS_KEY: "valueFrom:\n secretKeyRef:\n name: \"ums-portal-consumer-minio-credentials\"\n key: \"secretKey\""
CA_CERT: ""
CA_CERT_FILE: "/var/secrets/ca_cert"
TLS_MODE: "off"
PROVISIONING_API_BASE_URL: "http://ums-provisioning-api"
PROVISIONING_API_USERNAME: "portal-consumer"
...
---
# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-portal-consumer-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-consumer
helm.sh/chart: nubusPortalConsumer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
data:
wait-for-provisioning-api.sh: |
set -uo pipefail
retry_interval=2
response_code=404
timeout_duration=120
end_time=$((SECONDS + timeout_duration))
while [ "$response_code" -ne 200 ]; do
if [ $SECONDS -ge $end_time ]; then
echo "Timeout reached. Exiting."
exit 1
fi
echo "Waiting for the Provisioning API to be available ..."
response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" "${PROVISIONING_API_BASE_URL}/v1/subscriptions/${PROVISIONING_API_USERNAME}" -u "${PROVISIONING_API_USERNAME}":"${PROVISIONING_API_PASSWORD}")
if [ "${response_code}" -ne 200 ]; then
echo "Provisioning API is not reachable, status code: $response_code"
cat response.txt
sleep ${retry_interval}
else
echo "The Provisioning API is reachable"
exit 0
fi
done
echo "Permanent error ocurred. Exiting."
exit 1
wait-for-ldap.sh: |
#!/bin/bash
set -euxo pipefail
while ! ldapsearch -H ldap://$LDAP_HOST -D $LDAP_HOST_DN -y $MACHINE_SECRET_FILE -b "" -s base -LLL; do
echo "Checking if LDAP Server can be reached..."
sleep 2
done
echo "Success, the LDAP Server is available"
wait-for-udm.sh: |
#!/bin/bash
# TODO: find a way to not leak the udm passwort into the log
set -euo pipefail
while ! (set +x; curl -o- --fail --header "Accept: application/json" --user "${PORTAL_UDM_API_USERNAME}:$(cat $PORTAL_UDM_API_PASSWORD_FILE)" "${PORTAL_UDM_API_URL}ldap/base/"); do
echo "Checking if the UDM REST API can be reached..."
sleep 2
done
echo "Success, the UDM REST API is available"
wait-for-object-store.py: |
#!/bin/python3
import boto3
import os
s3 = boto3.resource(
's3',
endpoint_url=os.environ["OBJECT_STORAGE_ENDPOINT"],
aws_access_key_id=os.environ["OBJECT_STORAGE_ACCESS_KEY_ID"],
aws_secret_access_key=os.environ["OBJECT_STORAGE_SECRET_ACCESS_KEY"]
)
provisioned = False
while not provisioned:
bucket = s3.Bucket(os.environ["OBJECT_STORAGE_BUCKET"])
provisioned = bool(bucket.creation_date)
if not provisioned:
print("Waiting for the object storage service to be provisioned")
break
else:
print("Object storage already provisioned")
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/branding-configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-portal-frontend-branding"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-frontend
binaryData:
custom.css: "LyoqCiAqIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjMgQnVuZGVzbWluaXN0ZXJpdW0gZGVzIElubmVybiB1bmQgZsO8ciBIZWltYXQsIFBHIFplbkRpUyAiUHJvamVrdGdydXBwZSBmw7xyIEF1ZmJhdSBaZW5EaVMiCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAqLwo6cm9vdCB7CiAgLyogdXNlZCB0byBhY2NlbnQgc29tZSBlbGVtZW50czogY2hlY2tib3gvcmFkaW9ib3gsIGNoZWNrZWQgdG9nZ2xlIGJ1dHRvbnMvY2hlY2tlZCBpbnB1dCBmaWVsZHMgKi8KICAtLWNvbG9yLWFjY2VudDogIzU3MUVGQTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeTogI2Y1ZjVmNTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeS1kYXJrOiAjYzdiM2YzOwogIC0tY29sb3Itb3BlbmRlc2std2hpdGU6ICNmZmZmZmY7CiAgLS1jb2xvci1vcGVuZGVzay1ibGFjazogIzAwMDAwMDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWluZm86ICNhZGIzYmM7CiAgLS1iZ2MtYW5ub3VuY2VtZW50cy13YXJuOiAjZmZjNzAwOwogIC0tYmdjLWFubm91bmNlbWVudHMtc3VjY2VzczogIzAwZmZjZDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWRhbmdlcjogI2ZmNTI5ZTsKICAtLWJnYy1jb250ZW50LWJvZHk6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtY29udGVudC1jb250YWluZXI6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1jb250ZW50LWhlYWRlcjogdmFyKC0tYmdjLWNvbnRlbnQtY29udGFpbmVyKTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIC0tYmdjLWlucHV0Ym9yZGVyLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWJvZHk6IHZhcigtLWJnYy1jb250ZW50LWNvbnRhaW5lcik7CiAgLS1iZ2MtY2hlY2tib3gtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7CiAgLS1iZ2MtY2hlY2tib3gtZm9jdXM6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7CiAgLS1iZ2MtbG9hZGluZy1jaXJjbGU6IHZhcigtLWZvbnQtY29sb3ItY29udHJhc3QtbWlkZGxlKTsKICAtLWJnYy11c2VyLW1lbnUtaXRlbS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIC0tYmdjLXVzZXItbWVudS1pdGVtLWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogIC0tYmdjLWhlYWRlci1udW1iZXItY2lyY2xlOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIC0tYmdjLXRhYi1zZXBhcmF0b3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtcG9wdXA6ICNkMGQwZDA7CiAgLS1iZ2MtcG9wdXAtaXRlbS1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAtLWJnYy1wb3B1cC1pdGVtLWFjdGl2ZTogcmdiYSgwLCAwLCAwLCAwLjMpOwogIC0tYmdjLXBvcHVwLWl0ZW0tc2VsZWN0ZWQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAtLWJnYy1ncmlkLXJvdy1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTsKICAtLWJnYy1ncmlkLXJvdy1zZWxlY3RlZDogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1ob3ZlcjogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1zZWxlY3RlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAtLWJnYy1hcHB0aWxlLWRlZmF1bHQ6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1hcHBjZW50ZXItYXBwLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogIC0tYmdjLWFwcGNlbnRlci1hcHAtYWN0aXZlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOwogIC0tYmdjLXByb2dyZXNzYmFyLWVtcHR5OiAjYmRiZGJiOwogIC0tYmdjLXByb2dyZXNzYmFyLXByb2dyZXNzOiB2YXIoLS1iZ2Mtc3VjY2Vzcyk7CiAgLS1iZ2MtdGl0bGVwYW5lLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpOwogIC0tYmdjLXVuZGVybGF5OiByZ2IoMjIxIDIyMSAyMjEgLyA4MCUpOwogIC0tYmdjLWNoZWNrZXJib2FyZDogcmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KHZhcigtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcikgMCUgMjUlLCB0cmFuc3BhcmVudCAwJSA1MCUpIDUwJS8yMHB4IDIwcHg7CiAgLS1iZ2MtZXJyb3I6ICNmZjUyOWU7CiAgLS1iZ2Mtd2FybmluZzogI2ZmYzcwMDsKICAtLWJnYy1zdWNjZXNzOiAjMDBmZmNkOwogIC0tZm9udC1zaXplLTE6IDEuNXJlbTsKICAtLWZvbnQtc2l6ZS0yOiAxLjI1cmVtOwogIC0tZm9udC1zaXplLTM6IDFyZW07CiAgLS1mb250LXNpemUtNDogMC44NzVyZW07CiAgLS1mb250LXNpemUtNTogMC43NXJlbTsKICAtLWZvbnQtc2l6ZS1odG1sOiAxcmVtOwogIC0tZm9udC1zaXplLWJvZHk6IHZhcigtLWZvbnQtc2l6ZS00KTsKICAtLWZvbnQtbGluZWhlaWdodC1ub3JtYWw6IDEuNTsKICAtLWZvbnQtbGluZWhlaWdodC1jb21wYWN0OiAxLjI1OwogIC0tZm9udC1saW5laGVpZ2h0LWhlYWRlcjogMS4zOwogIC0tZm9udC13ZWlnaHQtYm9sZDogNjAwOwogIC0tZm9udC1jb2xvci1jb250cmFzdC1oaWdoOiAjMjAzMjU3OwogIC0tZm9udC1jb2xvci1jb250cmFzdC1taWRkbGU6ICM2MDYwNjA7CiAgLS1mb250LWNvbG9yLWNvbnRyYXN0LWxvdzogIzg2ODY4MTsKICAtLWZvbnQtY29sb3ItZXJyb3I6ICNiODIzMjM7CiAgLS1mb250LWNvbG9yLWVycm9yLWxpZ2h0OiAjRUFCRkJGOwogIC0tZm9udC1jb2xvci13YXJuaW5nOiAjZmY4YzAwOwogIC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0OiAjZmZlZWNhOwogIC0tZm9udC1jb2xvci1zdWNjZXNzOiAjOTJkNjI1OwogIC0tZm9udC1jb2xvci1zdWNjZXNzLWxpZ2h0OiAjZWJmZmNhOwogIC0tYnV0dG9uLXByaW1hcnktYmdjOiAjNTcxRUZBOwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWhvdmVyOiAjMWIxZDE4OwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWFjdGl2ZTogcmdiYSg3OSwgMTE0LCAyNCwgMSk7CiAgLS1idXR0b24tcHJpbWFyeS1iZ2MtZGlzYWJsZWQ6ICM1ZjVmNWM7CiAgLS1idXR0b24tYmdjOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIC0tYnV0dG9uLWJnYy1ob3ZlcjogIzU3NTc1NTsKICAtLWJ1dHRvbi1iZ2MtYWN0aXZlOiByZ2JhKDgwLCA4MCwgNzcsIDEpOwogIC0tYnV0dG9uLWJnYy1kaXNhYmxlZDogIzVmNWY1YzsKICAtLWJ1dHRvbi10ZXh0LWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24tdGV4dC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLXRleHQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLXRleHQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24taWNvbi1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24tYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24tYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWhpZ2hsaWdodGVkLWJnYzogdmFyKC0tYmdjLWlucHV0ZmllbGQtb24tYm9keSk7CiAgLS1idXR0b24taWNvbi1oaWdobGlnaHRlZC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWNvbG9yLWZvY3VzOiAjQUE5OEZCOwogIC0tcG9wdXAtYm9yZGVyOiAxcHggc29saWQgI2JkYmRiYjsKICAtLWJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2IoMSAwIDAgLyAxMiUpLCAwIDFweCA0cHggcmdiKDAgMSAwIC8gMTIlKTsKICAtLXNlcnZlcm92ZXJ2aWV3LXRpbGUtaG92ZXItYmdjOiAjMDBhY2I2OwogIC0tc2VydmVyb3ZlcnZpZXctdGlsZS1ob3Zlci1jb2xvcjogIzFlMWUxZDsKICAtLXBvcnRhbC10YWItYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYWNjZW50KTsKICAtLXNlbGVjdC1hcnJvdzogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJjQUFBQVhDQVlBQUFEZ0t0U2dBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQmtTVVJCVkhnQjdZM0JDUUFoREFTM0JFdElDVmVDSmRpNUpWd3BHc0dIaUdMRUNENHlzTDlsQmpDTXB3azhFbjZwL2tWNFh1TDlXQWVvL3NyL2d3REhpNEpBSzQ3WVlCWG94UTZiekFMSDRsbkFhNGxIZ2FRcEhnVlV4VzBnNElMWU1DNlRBWjBCSkEzYnhOM1JBQUFBQUVsRlRrU3VRbUNDJyk7CiAgLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcjogNjNweDsKICAvKiBLZXljbG9hayB1c2VyIHNjcmVlbnMgbG9nbyAqLwogIC0tbG9naW4tbG9nbzogdXJsKCIvc3RhdGljLWZpbGVzL2xvZ2luL2xvZ28uc3ZnIikgbm8tcmVwZWF0IGNlbnRlcjsKfQoKLyogQmV0YSBvdmVybGF5IGZvciBOb3RlcyAqLwoucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb250ZW50OiAiQmV0YSI7CiAgY29sb3I6ICM1NzFFRkE7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogOHB4OwogIHJpZ2h0OiAwcHg7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNSk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgei1pbmRleDogMTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzQ4cHgpIHsKICAucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTpiZWZvcmUgewogICAgICB0b3A6IDVweDsKICAgICAgZm9udC1zaXplOiAxMHB4OwogIH0KICAucG9ydGFsLXRpbGVfX25hbWUgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgfQp9CgoucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNvbnRlbnQ6ICIiOwogIHRvcDogMXB4OwogIHJpZ2h0OiAxcHg7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItd2lkdGg6IDAgY2FsYyh2YXIoLS1hcHAtdGlsZS1zaWRlLWxlbmd0aCkgLyAyKSBjYWxjKHZhcigtLWFwcC10aWxlLXNpZGUtbGVuZ3RoKSAvIDIpIDA7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjRTlFNEZDIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogIHotaW5kZXg6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGModmFyKC0tYm9yZGVyLXJhZGl1cy1hcHB0aWxlKSAtIDFweCk7Cn0KCi8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBiZWdpbiAqLwoja2MtbG9naW4sCiNrYy1sb2dvdXQsCiNzYXZlVE9UUEJ0biwKLnBmLWMtYnV0dG9uLmJ0bi1sZyB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKSAhaW1wb3J0YW50OwogIGJvcmRlcjogMnB4IHNvbGlkOwp9Cgoua2Mtc29jaWFsLXByb3ZpZGVyLW5hbWUgewogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSkgIWltcG9ydGFudDsKfQoKI2tjLWxvZ2luOmhvdmVyLAoja2MtbG9nb3V0OmhvdmVyLAojc2F2ZVRPVFBCdG46aG92ZXIsCi5wZi1jLWJ1dHRvbi5idG4tbGc6aG92ZXIgewogIGNvbG9yOiAjMDAwMDAwOwogIGJhY2tncm91bmQtY29sb3I6ICNlN2RmZmE7CiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYWNjZW50KTsKfQoKLnBmLWMtZm9ybS1jb250cm9sIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdkZmZhOwp9CgoucGYtYy1kcm9wZG93bl9fbWVudS1pdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSkgIWltcG9ydGFudDsKfQoKI2tjLWZvcm0tb3B0aW9ucyAuY2hlY2tib3ggewogIGNvbG9yOiB2YXIoLS1mb250LWNvbG9yLWNvbnRyYXN0LWhpZ2gpICFpbXBvcnRhbnQ7Cn0KCiNrYy1oZWFkZXItd3JhcHBlciB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5sb2dpbi1wZi1wYWdlIHsKICBtYXJnaW46IDBweDsKICBwYWRkaW5nOiAwcHg7CiAgbWluLWhlaWdodDogMTAwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmxvZ2luLXBmLXBhZ2UgI2tjLWhlYWRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmxvZ2luLXBmLXBhZ2UgLmNhcmQtcGYgewogIGJvcmRlci1yYWRpdXM6IDEzcHg7CiAgbWFyZ2luLXRvcDogNDBweDsKfQoKLmxvZ2luLXBmLXBhZ2UgI3VtY0xvZ2luTGlua3MgYSB7CiAgY29sb3I6ICMwMDA7Cn0KCi5sb2dpbi1wZi1wYWdlICN1bWNMb2dpbkxpbmtzIGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IHVuc2V0Owp9CgoubG9naW4tcGYgYm9keSB7CiAgYmFja2dyb3VuZDogI2VlZTZmZSB1cmwoIi9zdGF0aWMtZmlsZXMvbG9naW4vYmFja2dyb3VuZC5qcGciKSBjZW50ZXIgY2VudGVyL2NvdmVyIG5vLXJlcGVhdCAhaW1wb3J0YW50Owp9Ci8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBlbmQgKi8KCi5wb3J0YWwtdGl0bGVfX2ltYWdlIHsKICB3aWR0aDogODJweDsKICBoZWlnaHQ6IGF1dG87Cn0KCi5wb3J0YWwtdGl0bGUgewogIHBhZGRpbmc6IDAgMTBweCAwIDVweDsKfQoKLyoKLnBvcnRhbDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDA7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM1NzFFRkEsICM1NzFFRkEgNjIlLCB3aGl0ZSA2MiUpOwp9CiovCgoucG9ydGFsX19iYWNrZ3JvdW5kOjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiL3N0YXRpYy1maWxlcy9wb3J0YWwvYmFja2dyb3VuZC5zdmciKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjM3cHg7CiAgYmFja2dyb3VuZC1zaXplOiA0ODBweDsKICBib3R0b206IDRweDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAyNXB4IGNlbnRlcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTMwMHB4KSB7CiAgLnBvcnRhbF9fYmFja2dyb3VuZDo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtc2l6ZTogMzUwcHg7CiAgICBib3R0b206IC0yOHB4OwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTlweCBjZW50ZXI7CiAgfQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NDhweCkgewogIC5wb3J0YWxfX2JhY2tncm91bmQ6OmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDI1MHB4OwogICAgYm90dG9tOiAtNTBweDsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDIwcHggY2VudGVyOwogIH0KfQoKLnBvcnRhbC1jYXRlZ29yaWVzOmJlZm9yZSB7CiAgd2lkdGg6IDEwMCU7CiAgY29udGVudDogJyc7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgaGVpZ2h0OiAxcHg7CiAgdG9wOiB2YXIoLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcik7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDsKICB6LWluZGV4OiAxOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19sb2dpbi1oZWFkZXIgewogIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX2VkaXQtbW9kZSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX2VkaXQtbW9kZTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspOwp9CgoucG9ydGFsLWhlYWRlcl9fZWRpdC1tb2RlLWxhYmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19sb2dvdXQtbGluayB7CiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTpob3ZlciwKLnBvcnRhbC1zaWRlbmF2aWdhdGlvbl9fbWVudS1zdWJJdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wb3J0YWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTpob3ZlciAucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19zdWJtZW51IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTphY3RpdmUgewogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCmlucHV0IHsKICBib3JkZXI6IDAuMXJlbSBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyaykKfQoKaW5wdXRbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgovKmlucHV0IHsKYm9yZGVyLWNvbG9yOiB2YXIoLS1iZ2MtaW5wdXRib3JkZXItb24tY29udGFpbmVyKTsKfSovCgoucG9ydGFsLXNlYXJjaF9faW5wdXQgewogIGJvcmRlcjogMC4xcmVtIHNvbGlkIHZhcigtLWJnYy1pbnB1dGJvcmRlci1vbi1jb250YWluZXIpOwp9CgouaW1hZ2UtdXBsb2FkX19jYW52YXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKYnV0dG9uIHsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgpidXR0b24ucHJpbWFyeSB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKYnV0dG9uLnByaW1hcnkgc3ZnIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwp9CgpidXR0b25bZGlzYWJsZWRdIHsKICBjb2xvcjogI2FmYWZhZjsKfQoKYnV0dG9uW2Rpc2FibGVkXSBzdmcgewogIGNvbG9yOiAjYWZhZmFmOwp9CgppbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cyB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLW9wZW5kZXNrLWJsYWNrKTsKfQoKLmZvcm0tZWxlbWVudCB7CiAgbWFyZ2luLWJvdHRvbTogMnB4OwogIC8qbmVlZGVkIGZvciBjbGVhbmVyIE91dGxpbmUqLwogIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCnNlbGVjdCB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLm11bHRpLXNlbGVjdF9fc2VsZWN0IHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoubXVsdGktaW5wdXRfX3Jvdy0tbXVsdGlsaW5lIHsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9Cgp0ZXh0YXJlYSB7CiAgYm9yZGVyOiAuMXJlbSBzb2xpZCAjQjJBRkFGOwogIHdpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlOwp9Cgoubm90aWZpY2F0aW9uLS1zdWNjZXNzIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mb250LWNvbG9yLXN1Y2Nlc3MpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3Itc3VjY2Vzcy1saWdodCk7Cn0KCi5ub3RpZmljYXRpb24tLXdhcm5pbmcgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZvbnQtY29sb3Itd2FybmluZyk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0KTsKfQoKLm5vdGlmaWNhdGlvbi0tZXJyb3IgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZvbnQtY29sb3ItZXJyb3IpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3ItZXJyb3ItbGlnaHQpOwp9CgouaGVhZGVyLXRhYl9fY2xpY2thYmxlOmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICBib3gtc2hhZG93OiAwIDAuMnJlbSAwIHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLmhlYWRlci10YWI6aG92ZXI6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYm9yZGVyLWJvdHRvbTogMDsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgouaGVhZGVyLXRhYjpmb2N1czpiZWZvcmUgewogIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1ibGFjayk7CiAgYm94LXNoYWRvdzogMDsKfQoKLmhlYWRlci10YWItLWFjdGl2ZTpmb2N1czphZnRlciB7CiAgYm9yZGVyOiAwLjJyZW0gc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stYmxhY2spOwp9CgouaGVhZGVyLXRhYjpob3ZlciwKLmhlYWRlci10YWI6aG92ZXJ+Lmljb24tYnV0dG9uIC5wb3J0YWwtaWNvbiwKLmhlYWRlci10YWItLWFjdGl2ZSwKLmhlYWRlci10YWItLWFjdGl2ZX4uaWNvbi1idXR0b24gLnBvcnRhbC1pY29uIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wb3J0YWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7Cn0KCi5oZWFkZXItdGFiLS1hY3RpdmV+Lmljb24tYnV0dG9uOmZvY3VzIHsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKLmNob29zZS10YWI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5jaG9vc2UtdGFiLS1hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKCi5oZWFkZXItYnV0dG9uX19idXR0b24gLnBvcnRhbC1pY29uIHsKICBjb2xvcjogIzFGMUYxRjsKICBzdHJva2Utd2lkdGg6IDM7Cn0KCi5oZWFkZXItYnV0dG9uLS1pcy1hY3RpdmUgLnBvcnRhbC1pY29uIHsKICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTsKfQoKLyoKLy8KLy8KLy8gTG9hZGluZyBPdmVybGF5IGltYWdlIGFuZCBBbmltYXRpb24KKi8KCi5zdGFuZGJ5Q2lyY2xlIHsKICBkaXNwbGF5OiBub25lOwp9Cgouc3RhbmRieVdyYXBwZXI6YmVmb3JlIHsKICBjb250ZW50OiAnJzsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9zdGF0aWMtZmlsZXMvcG9ydGFsL3dhaXRpbmctc3Bpbm5lci5zdmciKTsKICBiYWNrZ3JvdW5kLXNpemU6IDcwJTsKICB3aWR0aDogMjAwcHg7CiAgaGVpZ2h0OiAyMDBweDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzYXRlLWJjayAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7CiAgYW5pbWF0aW9uOiBwdWxzYXRlLWJjayAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNhdGUtYmNrIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIHB1bHNhdGUtYmNrIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgoucG9ydGFsLXRvb2x0aXAgewogIGJvcmRlci1jb2xvcjogI0QzRDdERTsKICBib3gtc2hhZG93OiAwcHggMHB4IDRweCAwcHggcmdiYSgzMiwgNTAsIDg3LCAwLjEwKTsKfQoKLnBvcnRhbC10b29sdGlwX19hcnJvdyB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjRDNEN0RFIHRyYW5zcGFyZW50Owp9CgoucG9ydGFsLXRpdGxlX19wb3J0YWwtbmFtZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIGJvcmRlcjogMDsKfQ=="
favicon.ico: "AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA="
logo.svg: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4="
portal_background_image.svg: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg=="
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-portal-frontend"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-frontend
data:
ENVIRONMENT: "production"
LOG_LEVEL: "INFO"
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-portal-frontend-nginx
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-frontend
data:
nginx.conf: |
worker_processes auto;
error_log /dev/stderr notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /dev/stdout main;
sendfile on;
keepalive_timeout 65;
#gzip on;
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
}
...
---
# Source: nubus/charts/nubusPortalServer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-portal-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-server
helm.sh/chart: nubusPortalServer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-server
data:
ENVIRONMENT: "production"
LOG_LEVEL: "INFO"
PORTAL_SERVER_ADMIN_GROUP: "cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal"
PORTAL_SERVER_AUTH_MODE: "saml"
PORTAL_SERVER_EDITABLE: "true"
PORTAL_SERVER_FEATURE_TOGGLES: "{\"centered_layout\":false,\"notifications_api\":false,\"umc_session_refresh\":true,\"welcome_message\":false}"
PORTAL_SERVER_PORT: "80"
PORTAL_SERVER_UCS_INTERNAL_PATH: "portal-data"
PORTAL_SERVER_UMC_GET_URL: "http://ums-umc-server/get"
PORTAL_SERVER_UMC_SESSION_URL: "http://ums-umc-server/get/session-info"
PORTAL_SERVER_CENTRAL_NAVIGATION_ENABLED: "true"
PORTAL_UDM_API_URL: "http://ums-udm-rest-api:9979/udm/"
PORTAL_UDM_API_USERNAME: "svc-portal-server"
PORTAL_UDM_API_PASSWORD_FILE: "/var/secrets/udm_api_password"
OBJECT_STORAGE_ENDPOINT: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OBJECT_STORAGE_BUCKET: "ums"
---
# Source: nubus/charts/nubusProvisioning/charts/nats/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-provisioning-nats-config"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-nats
helm.sh/chart: nats-0.3.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-provisioning-nats
data:
nats.conf: |
{
server_name: $SERVER_NAME
pid_file: "/var/run/nats.pid"
port: 4222
http_port: 8222
lame_duck_duration: 30s
lame_duck_grace_period: 10s
max_payload: 16MB
jetstream {
max_file_store: 1Gi
max_memory_store: 256Mi
store_dir: "/data"
}
authorization {
users: [
{
user: admin
password: $NATS_PASSWORD
permissions: {
publish: ">"
subscribe: ">"
}
}
{
user: dispatcher
password: $NATS_DISPATCHER_PASSWORD
permissions: {
publish: ">"
subscribe: ">"
}
}
{
user: prefill
password: $NATS_PREFILL_PASSWORD
permissions: {
publish: ">"
subscribe: ">"
}
}
{
user: api
password: $NATS_PROVISIONING_API_PASSWORD
permissions: {
publish: ">"
subscribe: ">"
}
}
{
user: udmlistener
password: $NATS_UDM_LISTENER_PASSWORD
permissions: {
publish: ">"
subscribe: ">"
}
}
{
user: udmtransformer
password: $NATS_UDM_TRANSFORMER_PASSWORD
permissions: {
publish: ">"
subscribe: ">"
}
}
]
}
}
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-common
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
PROVISIONING_API_HOST: ums-provisioning-api
PROVISIONING_API_PORT: "80"
NATS_HOST: ums-provisioning-nats
NATS_PORT: "4222"
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-wait-for-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
wait-for-api.sh: |+
#!/bin/bash
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
set -xo pipefail
[ -z "$1" ] && {
echo "A url is required as the first argument"
exit 1
}
set -uxo pipefail
retry_interval=2
response_code=404
timeout_duration=240
end_time=$((SECONDS + timeout_duration))
while [ $response_code -ne 401 ]; do
if [ $SECONDS -ge $end_time ]; then
echo "Timeout reached. Exiting."
exit 1
fi
echo "Waiting for the Provisioning API to be available ..."
response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" -X POST "$1")
if [ "${response_code}" -ne 401 ]; then
echo "Provisioning API is not reachable, status code: $response_code"
cat response.txt
sleep ${retry_interval}
else
echo "The Provisioning API is reachable"
exit 0
fi
done
echo "Permanent error ocurred. Exiting."
exit 1
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
LOG_LEVEL: "INFO"
DEBUG: "false"
ROOT_PATH: "/"
CORS_ALL: "false"
wait-for-nats.py: |
#!/usr/bin/env python3
import os
import asyncio
from nats.aio.client import Client as NATS
async def error_cb(e):
print(f"Unavailable, waiting 2 seconds. Error: {e}")
await asyncio.sleep(2)
async def check_nats():
nc = NATS()
print("Checking if NATS server can be reached...")
await nc.connect(
servers=[f"nats://{os.environ['NATS_HOST']}:{os.environ['NATS_PORT']}"],
error_cb=error_cb,
user=os.environ['NATS_USER'],
password=os.environ['NATS_PASSWORD'],
)
print("Success, the NATS server is available")
await nc.close()
asyncio.run(check_nats())
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-dispatcher
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
LOG_LEVEL: "INFO"
NATS_MAX_RECONNECT_ATTEMPTS: "5"
UDM_HOST: "ums-udm-rest-api"
UDM_PORT: "9979"
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-prefill
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
MAX_PREFILL_ATTEMPTS: "5"
NATS_MAX_RECONNECT_ATTEMPTS: "5"
LOG_LEVEL: "INFO"
UDM_HOST: "ums-udm-rest-api"
UDM_PORT: "9979"
wait-for-udm.py: |
#!/bin/python3
import os
import time
import sys
from univention.admin.rest.client import UDM
udm = UDM.http(
f"http://{os.environ['UDM_HOST']}:{os.environ['UDM_PORT']}/udm/",
os.environ["UDM_USERNAME"],
os.environ["UDM_PASSWORD"],
)
timeout = int(os.environ.get("TIMEOUT", "600"))
start_time = time.time()
while time.time() - start_time < timeout:
print("Checking if UDM Rest API can be reached...")
try:
udm.get_ldap_base()
print("Success, UDM Rest API is available")
sys.exit(0)
except Exception as e:
print(f"Unavailable, waiting 2 seconds. Error: {e}")
time.sleep(2)
print("Timeout reached, giving up")
sys.exit(1)
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-udm-transformer
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
LDAP_PUBLISHER_NAME: "udm-listener"
LOG_LEVEL: "INFO"
UDM_HOST: "ums-udm-rest-api"
UDM_PORT: "9979"
LDAP_HOST: "ums-ldap-server-primary"
LDAP_PORT: "389"
LDAP_TLS_MODE: "off"
LDAP_BASE_DN: "dc=swp-ldap,dc=internal"
LDAP_BIND_DN: "cn=admin,dc=swp-ldap,dc=internal"
...
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-register-consumers
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning
helm.sh/chart: nubusProvisioning-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
PROVISIONING_API_BASE_URL: "http://ums-provisioning-api/v1/subscriptions"
UDM_HOST: "ums-udm-rest-api"
UDM_PORT: "9979"
LDAP_BASE_DN: "dc=swp-ldap,dc=internal"
wait-for-data-loader.sh: |
#!/bin/bash
# TODO: find a way to not leak the udm passwort into the log
set -euxo pipefail
while ! (set +x; curl -o- --fail -X GET -u "${UDM_USERNAME}:${UDM_PASSWORD}" "http://${UDM_HOST}:${UDM_PORT}/udm/settings/data/cn=stack-data-ums.done,cn=data,cn=univention,${LDAP_BASE_DN}" -H 'Accept: application/json'); do
echo "Data loader not finished yet, waiting..."
sleep 2
done
echo "Success, the data loader has finished."
...
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-selfservice-listener-common
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: selfservice-listener
helm.sh/chart: nubusSelfServiceConsumer-0.14.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
data:
LOG_LEVEL: "INFO"
MAX_UMC_REQUEST_RETRIES: "5"
PROVISIONING_API_BASE_URL: "http://ums-provisioning-api"
UMC_SERVER_URL: "http://ums-umc-server"
MAX_ACKNOWLEDGEMENT_RETRIES: "3"
...
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-selfservice-listener-scripts
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: selfservice-listener
helm.sh/chart: nubusSelfServiceConsumer-0.14.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
data:
wait-for-provisioning-api.sh: |
set -uo pipefail
retry_interval=2
response_code=404
timeout_duration=120
end_time=$((SECONDS + timeout_duration))
while [ "$response_code" -ne 200 ]; do
if [ $SECONDS -ge $end_time ]; then
echo "Timeout reached. Exiting."
exit 1
fi
echo "Waiting for the Provisioning API to be available ..."
response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" "${PROVISIONING_API_BASE_URL}/v1/subscriptions/${PROVISIONING_API_USERNAME}" -u "${PROVISIONING_API_USERNAME}":"${PROVISIONING_API_PASSWORD}")
if [ "${response_code}" -ne 200 ]; then
echo "Provisioning API is not reachable, status code: $response_code"
cat response.txt
sleep ${retry_interval}
else
echo "The Provisioning API is reachable"
exit 0
fi
done
echo "Permanent error ocurred. Exiting."
exit 1
...
---
# Source: nubus/charts/nubusStackDataUms/templates/configmap-data.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: 'ums-stack-data-ums-data'
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
data:
00-service-accounts.yaml: |-
# Source: data-files/default/00-service-accounts.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
# Initializes the base structure for service accounts.
---
action: create
module: groups/group
position: cn=groups,{{ ldapBaseDn }}
properties:
name: "Domain Service Users"
00-umc-init.yaml: |-
# Source: data-files/default/00-umc-init.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
# Source: https://git.knut.univention.de/univention/ucs/-/blob/5.0-4/base/univention-lib/shell/umc.sh#L85
# "umc_init" is called from many join scripts
---
action: create
module: container/cn
position: cn=univention,{{ ldapBaseDn }}
properties:
name: UMC
---
action: create
module: container/cn
position: cn=policies,{{ ldapBaseDn }}
properties:
name: UMC
policyPath: true
---
action: create
module: container/cn
position: cn=UMC,cn=univention,{{ ldapBaseDn }}
properties:
name: operations
---
action: create
module: policies/umc
position: cn=UMC,cn=policies,{{ ldapBaseDn }}
properties:
name: default-umc-all
---
action: ensure_list_contains
module: groups/group
position: cn=Domain Admins,cn=groups,{{ ldapBaseDn }}
policies:
policies/umc:
- "cn=default-umc-all,cn=UMC,cn=policies,{{ ldapBaseDn }}"
---
action: create
module: policies/umc
position: cn=UMC,cn=policies,{{ ldapBaseDn }}
properties:
name: default-umc-users
---
action: ensure_list_contains
module: groups/group
position: cn=Domain Users,cn=groups,{{ ldapBaseDn }}
policies:
policies/umc:
- "cn=default-umc-users,cn=UMC,cn=policies,{{ ldapBaseDn }}"
09-set-mail-domain.yaml: |-
# Source: data-files/default/09-set-mail-domain.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# TODO: move this back to stack-data-swp after solving
# https://git.knut.univention.de/univention/customers/dataport/team-souvap/-/issues/286
action: create
module: mail/domain
position: cn=domain,cn=mail,{{ ldapBaseDn }}
properties:
name: {{ externalMailDomain }}
10-ldap-server.yaml: |-
# Source: data-files/default/10-ldap-server.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# See: https://git.knut.univention.de/univention/ucs/-/blob/5.0-3/management/univention-ldap/10univention-ldap-server.inst#L254
action: "create"
module: "users/user"
position: "cn=users,{{ ldapBaseDn }}"
properties:
username: "Administrator"
lastname: "Administrator"
# TODO: Workaround. We configure currently "firstname" and
# "mailPrimaryAddress" as required via UCR settings.
# See: https://git.knut.univention.de/univention/customers/dataport/team-souvap/-/issues/286
firstname: "Admin"
mailPrimaryAddress: "administrator@{{ externalMailDomain }}"
password: "{{ initialPasswordAdministrator }}"
primaryGroup: "cn=Domain Admins,cn=groups,{{ ldapBaseDn }}"
guardianRoles:
- "guardian:builtin:super-admin"
---
# See: https://git.knut.univention.de/univention/ucs/-/blob/5.0-3/management/univention-ldap/10univention-ldap-server.inst#L265
action: ensure_list_contains
module: groups/group
position: cn=Domain Users,cn=groups,{{ ldapBaseDn }}
properties:
users:
- "uid=Administrator,cn=users,{{ ldapBaseDn }}"
---
action: ensure_list_contains
module: groups/group
position: cn=Domain Admins,cn=groups,{{ ldapBaseDn }}
properties:
users:
- "uid=Administrator,cn=users,{{ ldapBaseDn }}"
35-management-console-module-udm.yaml: |-
# Source: data-files/default/35-management-console-module-udm.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
# Source: https://git.knut.univention.de/univention/ucs/-/blob/5.0-4/management/univention-management-console-module-udm/35univention-management-console-module-udm.inst
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-all"
description: "UDM - All operations"
flavor: ""
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-users"
description: "UDM - Users"
flavor: "users/user"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "objectType=users/user"
- command: "udm/*"
option: "!objectType"
- command: "udm/query"
option: "objectType=groups/group"
- command: "udm/properties"
option: "objectType=groups/group"
- command: "udm/values"
option: "objectType=groups/group"
- command: "udm/properties"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/query"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-groups"
description: "UDM - Groups"
flavor: "groups/group"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "objectType=groups/group"
- command: "udm/*"
option: "!objectType"
- command: "udm/query"
option: "objectType=users/user"
- command: "udm/properties"
option: "objectType=users/user"
- command: "udm/values"
option: "objectType=users/user"
- command: "udm/query"
option: "objectType=computers/*"
- command: "udm/properties"
option: "objectType=computers/*"
- command: "udm/values"
option: "objectType=computers/*"
- command: "udm/properties"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/query"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-policies"
description: "UDM - Policies"
flavor: "policies/policy"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "objectType=policies/*"
- command: "udm/*"
option: "!objectType"
- command: "udm/properties"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/query"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-navigation"
description: "UDM - Navigation"
flavor: "navigation"
hosts: []
objectFlag: []
operation:
- command: "udm/get"
option: ""
- command: "udm/layout"
option: ""
- command: "udm/meta_info"
option: ""
- command: "udm/nav/container/query"
option: ""
- command: "udm/nav/object/query"
option: ""
- command: "udm/policies"
option: ""
- command: "udm/properties"
option: ""
- command: "udm/types"
option: ""
- command: "udm/values"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-portal"
description: "UDM - Portal settings"
flavor: "settings/portal_all"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "objectType=settings/portal*"
- command: "udm/types"
option: ""
- command: "udm/get"
option: ""
- command: "udm/put"
option: ""
- command: "udm/properties"
option: ""
- command: "udm/values"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-new-portal"
description: "UDM - Portal"
flavor: "portals/all"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "objectType=portals/*"
- command: "udm/types"
option: ""
- command: "udm/get"
option: ""
- command: "udm/put"
option: ""
- command: "udm/properties"
option: ""
- command: "udm/values"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-syntax"
description: "UDM - Syntax"
flavor: ""
hosts: []
objectFlag: []
operation:
- command: "udm/syntax/choices/info"
option: ""
- command: "udm/syntax/choices"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-validate"
description: "UDM - Validate"
flavor: ""
hosts: []
objectFlag: []
operation:
- command: "udm/validate"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-reports"
description: "UDM - Reports"
flavor: ""
hosts: []
objectFlag: []
operation:
- command: "udm/reports/query"
option: ""
- command: "udm/reports/create"
option: ""
- command: "udm/reports/get"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-usertemplates"
description: "UDM - Apply User Templates"
flavor: "settings/usertemplate"
hosts: []
objectFlag: []
operation:
- command: "udm/get"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-blocklists"
description: "UDM - Blocklists"
flavor: "blocklists/all"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "objectType=blocklists/*"
flavor: "blocklists/all"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-contacts"
description: "UDM - Contacts"
flavor: "users/contact"
hosts: []
objectFlag: []
operation:
- command: "udm/reports/query"
option: ""
- command: "udm/meta_info"
option: ""
- command: "udm/containers"
option: ""
- command: "udm/types"
option: ""
- command: "udm/properties"
option: ""
- command: "udm/layout"
option: ""
- command: "udm/policies"
option: ""
- command: "udm/values"
option: ""
- command: "udm/query"
option: ""
- command: "udm/*"
option: "objectType=users/contact"
- command: "udm/*"
option: "!objectType"
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-printers"
description: "UDM - Printers"
flavor: "shares/print"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "!objectType"
- command: "udm/*"
option: "objectType=shares/print*"
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-dhcp"
description: "UDM - DHCP"
flavor: "dhcp/dhcp"
hosts: []
objectFlag: []
operation:
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/*"
option: "objectType=dhcp/*"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-dns"
description: "UDM - DNS"
flavor: "dns/dns"
hosts: []
objectFlag: []
operation:
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/*"
option: "objectType=dns/*"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-mail"
description: "UDM - Mail"
flavor: "mail/mail"
hosts: []
objectFlag: []
operation:
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/*"
option: "objectType=mail/*"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-network"
description: "UDM - Network"
flavor: "networks/network"
hosts: []
objectFlag: []
operation:
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/*"
option: "objectType=networks/network"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-shares"
description: "UDM - Shares"
flavor: "shares/share"
hosts: []
objectFlag: []
operation:
- command: "udm/*"
option: "!objectType"
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/*"
option: "objectType=shares/share"
- command: "udm/properties"
option: "objectType=policies/*"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-computers"
description: "UDM - Computers"
flavor: "computers/computer"
hosts: []
objectFlag: []
operation:
- command: "udm/query"
option: "objectType=policies/*"
- command: "udm/layout"
option: "objectType=policies/*"
- command: "udm/*"
option: "objectType=computers/*"
- command: "udm/query"
option: "objectType=groups/group"
- command: "udm/properties"
option: "objectType=policies/*"
- command: "udm/*"
option: "!objectType"
- command: "udm/properties"
option: "objectType=groups/group"
- command: "udm/values"
option: "objectType=groups/group"
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "welcome-all"
description: "Welcome"
flavor: ""
hosts: []
objectFlag: []
operation:
- command: "welcome/*"
option: ""
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-license"
flavor: "license-import"
description: "UDM - License Import"
operation:
- command: "udm/license/*"
option: ""
hosts: []
objectFlag: []
---
action: create
module: settings/umc_operationset
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "udm-request-license"
flavor: ""
description: "UDM - Request new license"
operation:
- command: "udm/request_new_license"
option: ""
hosts: []
objectFlag: []
---
action: ensure_list_contains
module: policies/umc
position: "cn=default-umc-all,cn=UMC,cn=policies,{{ ldapBaseDn }}"
properties:
allow:
- "cn=welcome-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-contacts,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-groups,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-users,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-computers,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-printers,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-blocklists,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-dhcp,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-dns,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-navigation,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-mail,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-network,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-policies,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-shares,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-portal,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-new-portal,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-syntax,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-license,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-request-license,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-validate,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-reports,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
- "cn=udm-usertemplates,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
---
action: create
module: policies/umc
position: cn=UMC,cn=policies,{{ ldapBaseDn }}
properties:
name: default-udm-self
---
action: ensure_list_contains
module: policies/umc
position: "cn=default-udm-self,cn=UMC,cn=policies,{{ ldapBaseDn }}"
properties:
allow:
- "cn=udm-self,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
39-domain-portal.yaml: |-
# Source: data-files/default/39-domain-portal.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Change showUmc in the domain portal
action: "modify"
module: "portals/portal"
position: "cn=domain,cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
showUmc: {{ showUmc }}
---
# enable SAML login tile
action: "modify"
module: "portals/entry"
position: "cn=login-saml,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
activated: true
40-self-service.yaml: |-
# Source: data-files/default/40-self-service.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: ucs/management/univention-self-service/34univention-self-service.inst
action: "create"
module: "policies/umc"
position: "cn=UMC,cn=policies,{{ ldapBaseDn }}"
properties:
name: "selfservice-umc-servers"
ldapFilter: "(|(objectClass=univentionMemberserver)(objectClass=univentionDomainController))"
---
action: "ensure_list_contains"
module: "policies/umc"
position: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}"
properties:
allow:
- "allow=cn=passwordchange-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
# TODO: Check if we need this in the container stack (if so, add the missing
# schema aspects), otherwise remove.
# ---
# action: "modify"
# module: "container/cn"
# position: "cn=dc,cn=computers,{{ ldapBaseDn }}"
# properties:
# policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}"
# ---
# action: "modify"
# module: "policies/umc"
# position: "cn=memberserver,cn=computers,{{ ldapBaseDn }}"
# properties:
# policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}"
---
# Source: ucs/management/univention-self-service/35univention-self-service-passwordreset-umc.inst
action: "create"
module: "settings/extended_attribute"
position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}"
properties:
name: "UniventionPasswordSelfServiceEmail"
CLIName: "PasswordRecoveryEmail"
module: ["users/user"]
syntax: "emailAddress"
default: ""
ldapMapping: "univentionPasswordSelfServiceEmail"
objectClass: "univentionPasswordSelfService"
shortDescription: "Password recovery e-mail address"
longDescription: "During the password recovery process an e-mail is sent to the specified e-mail address. Password recovery via e-mail is only available for users if configured and enabled by the administrator."
translationShortDescription:
de_DE: "E-Mail-Adresse zur Passwort-Wiederherstellung"
fr_FR: "Adresse e-mail pour la réinitialisation du mot de passe"
translationLongDescription:
de_DE: "An diese E-Mail-Adresse wird während der Passwort-Wiederherstellung eine Mail verschickt. Der Mail-Versand steht dem Benutzer nur zur Verfügung, wenn dieser vom Administrator eingerichtet und freigeschaltet wurde."
fr_FR: "Lors de la réinitialisation du mot de passe, un e-mail est envoyé à l’adresse spécifiée. La réinitialisation du mot de passe par e-mail est disponible pour les utilisateurs et utilisatrices uniquement si elle a été activée et configurée par l’administrateur ou l’administratrice."
tabAdvanced: False
tabName: "Password recovery"
translationTabName:
de_DE: "Passwort-Wiederherstellung"
fr_FR: "Réinitialisation du mot de passe"
multivalue: False
valueRequired: False
mayChange: True
doNotSearch: False
deleteObjectClass: False
overwriteTab: False
fullWidth: True
---
action: "create"
module: "settings/extended_attribute"
position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}"
properties:
name: "UniventionPasswordSelfServiceMobile"
CLIName: "PasswordRecoveryMobile"
module: ["users/user"]
syntax: "phone"
default: ""
objectClass: "univentionPasswordSelfService"
ldapMapping: "univentionPasswordSelfServiceMobile"
shortDescription: "Mobile phone number"
translationShortDescription:
de_DE: "Mobilfunknummer"
fr_FR: "Numéro de téléphone portable"
longDescription: "During the password recovery process a SMS is sent to the specified mobile phone number. Password recovery via SMS is only available for users if configured and enabled by the administrator."
translationLongDescription:
de_DE: "An diese Mobilfunknummer wird während der Passwort-Wiederherstellung eine SMS verschickt. Der SMS-Versand steht dem Benutzer nur zur Verfügung, wenn dieser vom Administrator eingerichtet und freigeschaltet wurde."
fr_FR: "Lors de la réinitialisation du mot de passe, un SMS est envoyé au numéro de portable spécifié. La réinitialisation du mot de passe par SMS est disponible pour les utilisateurs et utilisatrices uniquement si elle a été activée et configurée par l’administrateur ou l’administratrice."
tabAdvanced: False
tabName: "Password recovery"
translationTabName:
de_DE: "Passwort-Wiederherstellung"
fr_FR: "Réinitialisation du mot de passe"
multivalue: False
valueRequired: False
mayChange: True
doNotSearch: False
deleteObjectClass: False
overwriteTab: False
fullWidth: True
---
action: "create"
module: "settings/extended_attribute"
position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}"
properties:
name: "UniventionPasswordRecoveryEmailVerified"
CLIName: "PasswordRecoveryEmailVerified"
module: ["users/user"]
syntax: "TrueFalseUpper"
objectClass: "univentionPasswordSelfService"
ldapMapping: "univentionPasswordRecoveryEmailVerified"
shortDescription: "Email address verified"
translationShortDescription:
de_DE: "E-Mail-Adresse verifiziert"
fr_FR: "Adresse e-mail vérifiée"
longDescription: "This attribute indicates whether an email address is verified or not. The value is set to False both by default and in case PasswordRecoveryMail is changed. When an email address is verified the value will be set to True. "
translationLongDescription:
de_DE: "Dieses Attribut zeigt an, ob eine E-Mail-Adresse bereits verifiziert ist oder nicht. Anfänglich und bei Änderung der PasswordRecoveryMail ist der Wert auf False gesetzt. Wenn es zur Verifikation einer E-Mail-Adresse kommt, wird der Wert auf True gesetzt."
fr_FR: "Cet attribut indique si une adresse e-mail a déjà été vérifiée ou non. La valeur est réglée sur False par défaut et lorsque PasswordRecoveryMail est modifié. Lorsque’une adresse e-mail a été vérifiée, la valeur est réglée sur True."
tabAdvanced: False
tabName: "Password recovery"
translationTabName:
de_DE: "Passwort-Wiederherstellung"
fr_FR: "Réinitialisation du mot de passe"
multivalue: False
valueRequired: False
mayChange: True
doNotSearch: False
deleteObjectClass: False
overwriteTab: False
fullWidth: True
---
action: "create"
module: "settings/extended_attribute"
position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}"
properties:
name: "UniventionRegisteredThroughSelfService"
CLIName: "RegisteredThroughSelfService"
module: ["users/user"]
syntax: "TrueFalseUpper"
objectClass: "univentionPasswordSelfService"
ldapMapping: "univentionRegisteredThroughSelfService"
shortDescription: "Self-registration"
translationShortDescription:
de_DE: "Selbstregistrierung"
fr_FR: "Auto-inscription"
longDescription: "This attribute indicates whether a user has self-registered through the Self Service module."
translationLongDescription:
de_DE: "Dieses Attribut zeigt an, ob sich ein User selbst über das Self-Service-Modul registriert hat."
fr_FR: "Cet attribut indique si un utilisateur ou une utilisatrice a utilisé le module de libre-service pour s’inscrire par ses propres moyens."
tabAdvanced: False
tabName: "Password recovery"
translationTabName:
de_DE: "Passwort-Wiederherstellung"
fr_FR: "Réinitialisation du mot de passe"
multivalue: False
valueRequired: False
mayChange: True
doNotSearch: False
deleteObjectClass: False
overwriteTab: False
fullWidth: True
---
action: "create"
module: "settings/extended_attribute"
position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}"
properties:
name: "UniventionDeregisteredThroughSelfService"
CLIName: "DeregisteredThroughSelfService"
module: ["users/user"]
syntax: "TrueFalseUpper"
objectClass: "univentionPasswordSelfService"
ldapMapping: "univentionDeregisteredThroughSelfService"
shortDescription: "Self-deregistration"
translationShortDescription:
de_DE: "Selbst-Deregistrierung"
fr_FR: "Auto-désinscription"
longDescription: "This attribute indicates whether a user has requested to deregister his account."
translationLongDescription:
de_DE: "Dieses Attribut zeigt an, ob sich ein User selbst über das Self-Service-Modul deregistriert hat."
fr_FR: "Cet attribut indique si un utilisateur ou une utilisatrice a demandé sa désinscription."
tabAdvanced: False
tabName: "Password recovery"
translationTabName:
de_DE: "Passwort-Wiederherstellung"
fr_FR: "Réinitialisation du mot de passe"
multivalue: False
valueRequired: False
mayChange: True
doNotSearch: False
deleteObjectClass: False
overwriteTab: False
fullWidth: True
---
action: "create"
module: "settings/extended_attribute"
position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}"
properties:
name: "UniventionDeregistrationTimestamp"
CLIName: "DeregistrationTimestamp"
module: ["users/user"]
syntax: "string"
objectClass: "univentionPasswordSelfService"
ldapMapping: "univentionDeregistrationTimestamp"
shortDescription: "Deregistration timestamp"
translationShortDescription:
de_DE: "Deregistrierungs-Timestamp"
fr_FR: "Horodatage de la désinscription"
longDescription: "Timestamp of the moment the user requested deregistration of his account"
translationLongDescription:
de_DE: "Zeitstempel des Zeitpunkts, zu dem der Benutzer die Abmeldung seines Kontos beantragt hat."
fr_FR: "Horodatage de l’instant auquel l’utilisateur ou l’utilisatrice a demandé sa désinscription."
tabAdvanced: False
tabName: "Password recovery"
translationTabName:
de_DE: "Passwort-Wiederherstellung"
fr_FR: "Réinitialisation du mot de passe"
multivalue: False
valueRequired: False
mayChange: True
doNotSearch: False
deleteObjectClass: False
overwriteTab: False
fullWidth: True
---
action: "create"
module: "settings/usertemplate"
position: "cn=templates,cn=univention,{{ ldapBaseDn }}"
properties:
name: "selfserviceregistrationtemplate"
displayName: " <:strip>"
unixhome: "/home/"
primaryGroup: "cn=Domain Users,cn=groups,{{ ldapBaseDn }}"
shell: "/bin/bash"
---
action: "create"
module: "container/cn"
position: "{{ ldapBaseDn }}"
properties:
name: "self registered users"
---
action: "create"
module: "settings/umc_operationset"
position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
properties:
name: "passwordreset-all"
description: "Password reset service"
flavor: ""
hosts: []
objectFlag: []
operation:
- command: "passwordreset/*"
option: ""
---
action: "ensure_list_contains"
module: "policies/umc"
position: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}"
properties:
allow:
- "allow=cn=passwordreset-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}"
...
41-selfservice-portal.yaml: |-
# Source: data-files/default/41-selfservice-portal.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
action: "create"
module: "portals/entry"
position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service-password-change"
icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWtleSI+PHBhdGggZD0iTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDQiPjwvcGF0aD48L3N2Zz4K
activated: True
anonymous: False
linkTarget: "samewindow"
displayName:
en_US: "Change your password"
de_DE: "Ihr Passwort ändern"
description:
en_US: "Change your password"
de_DE: "Ihr Passwort ändern"
link:
- - "en_US"
- "#/selfservice/passwordchange"
---
action: "create"
module: "portals/entry"
position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service-my-profile"
icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZWxsaXBzZSBjbGFzcz0iYSIgY3g9Ijc0LjQ1NzQzIiBjeT0iNDguOTk1NzkiIHJ4PSIyMS4yNDEwNiIgcnk9IjIxLjUyMjk1Ii8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTAuMDU3MzcsNzguNDEzMjFjLTIuNjc1NjYtNi4zMTE3MS03LjI3NDc4LTExLjEzNDc3LTE1LjAwMTc3LTExLjQzN2EyNy4wMDI1MiwyNy4wMDI1MiwwLDAsMS00MS4xOTYyMi4wMDAxOEMzOC4zMjgxMiw2Ny41ODksMzUuNDUzLDg2LjYwNzczLDM1LjQ1Myw5OS4wOTA3YzAsOS4wNjk3LDUuOTIxMTUsMTQuNTIwOTMsMTQuODAyODYsMTQuNTIwOTNIOTMuMjgzNTdhMjMuNjg3NTUsMjMuNjg3NTUsMCwwLDEsMTYuNzczOC0zNS4xOTg0MloiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTExMy44MzgzOCw4MS4xMDgxNWEyMC43MDk0OCwyMC43MDk0OCwwLDEsMCwyMC43MSwyMC43MDk0OEEyMC43MzI2OCwyMC43MzI2OCwwLDAsMCwxMTMuODM4MzgsODEuMTA4MTVabTAsMzguNDE5YTE3LjcwOTQ4LDE3LjcwOTQ4LDAsMSwxLDE3LjcxLTE3LjcwOTQ3QTE3LjcyOTQsMTcuNzI5NCwwLDAsMSwxMTMuODM4MzgsMTE5LjUyNzFaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTguNzczNDQsOTMuMzM4NDRsLTEwLjQxMzMzLDEwLjQxMzMzLDMuMzYyMTIsMy40NDY5TDEyMi4xNzc5Miw5Ni43NDNhMi40MDczNSwyLjQwNzM1LDAsMCwwLTMuNDA0NDgtMy40MDQ1NFoiLz48cG9seWdvbiBjbGFzcz0iYSIgcG9pbnRzPSIxMDcuMjgzIDEwNC44MjkgMTA2LjAwNyAxMDkuNTEgMTEwLjY0NiAxMDguMjQ0IDEwNy4yOTkgMTA0LjgxMyAxMDcuMjgzIDEwNC44MjkiLz48L3N2Zz4=
activated: True
anonymous: False
linkTarget: "samewindow"
displayName:
en_US: "My Profile"
de_DE: "Mein Profil"
description:
en_US: "Manage profile"
de_DE: "Profil verwalten"
link:
- - "en_US"
- "#/selfservice/profile"
---
action: "create"
module: "portals/category"
position: "cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service-profile"
displayName:
en_US: "User Profile"
de_DE: "Benutzerprofil"
entries:
- "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
---
action: "create"
module: "portals/entry"
position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service-protect-account"
icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTEwNi4wNTk5Myw3Mi4yMjA3YTcuNjk5LDcuNjk5LDAsMCwwLTcuNTYyMTMtNy41NTUzNmMtLjg4Ny0uMDIxNTQtMS43NzUtLjAwMzE3LTIuNzc3ODMtLjAwMzE3VjYzLjc2NDFjMC0zLjA3NDc3LjAwNTA2LTYuMTQ5Ni0uMDAxLTkuMjI0NDNBMjAuNzEyODksMjAuNzEyODksMCwwLDAsNTQuNjExMiw1MC42Nzc1NWEyOC43OTU0MiwyOC43OTU0MiwwLDAsMC0uMzIzMDYsNC4xMDM1MmMtLjA0NTc3LDMuMjU4MTgtLjAxNDc3LDYuNTE3NDUtLjAxNDc3LDkuODc2NC0uNzcyNTgsMC0xLjQ5MTI3LS4wMDExNi0yLjIwOTkuMDAwMjRhNy43ODI4Miw3Ljc4MjgyLDAsMCwwLTguMTUwMTQsOC4xMjgxOHEtLjAwNywxNy42ODAyLS4wMDEyMywzNS4zNjA0MWMuMDAwMzcsNC4zMjkyMiwyLjIzODIyLDcuMTY3NjYsNi40NDI0NSw4LjE4NDIxYS43MTc2MS43MTc2MSwwLDAsMSwuMTk1MTMuMTI2MjhoNDguODk0Yy41MDYxLS4xNTk4NSwxLjAxODc0LS4zMDE3LDEuNTE3MjEtLjQ4MjU1YTcuNjM5ODMsNy42Mzk4MywwLDAsMCw1LjEwMzQ2LTcuMDk4NjlRMTA2LjEwNzYzLDkwLjU0ODE2LDEwNi4wNTk5Myw3Mi4yMjA3Wk02MS4xOTQ3LDYyLjQ4ODFjLjAwMDEyLTIuNjY5NzQtLjAxMTE3LTUuMzM5Ni4wMDI3NC04LjAwOTM0YTEzLjc5MjQxLDEzLjc5MjQxLDAsMCwxLDI3LjM3NC0yLjU5LDM0LjkyNzg0LDM0LjkyNzg0LDAsMCwxLC4yMTgzOCw0Ljc1NjljLjAzMjQxLDIuNjM3NDUuMDA4ODUsNS4yNzU1Ny4wMDg4NSw3Ljk2OEg2MS4xOTQ2NEM2MS4xOTQ2NCw2My44NzcyLDYxLjE5NDY0LDYzLjE4MjYyLDYxLjE5NDcsNjIuNDg4MVpNODkuMDI5OSw5Ni4zNzlhNS4wMTI4Miw1LjAxMjgyLDAsMCwxLTQuNTk2LDMuNTMyMjJxLS4yNDU4MS4wMTg4Ny0uNDgzNTIuMDE4OGE1LjEzMTUyLDUuMTMxNTIsMCwwLDEtNC40MTQ1NS0yLjQ0NjIzLDcuMzQxNjMsNy4zNDE2MywwLDAsMS00LjUwNjgzLDEuNTMwNTgsNy40MzgxOCw3LjQzODE4LDAsMSwxLDMuODE5NjQtMTMuODAxMDgsMS44ODE2NCwxLjg4MTY0LDAsMCwxLDEuNjk2NTktMS4wODAzOSwxLjkzMTUzLDEuOTMxNTMsMCwwLDEsLjE5NDk1LjAwOTg5LDEuODk0ODMsMS44OTQ4MywwLDAsMSwxLjY5MjYzLDEuODkyN3EuMDA2NTksMS41NTY0OS4wMDI4NiwzLjExM2wtLjAwMDU0LDEuMzcwNzNMODIuNDM0LDkxLjcxNzE2Yy0uMDAxNTIuOTc3NDgtLjAwMzExLDEuOTU1LjAwNiwyLjkzMjI1YTEuNTQxNzIsMS41NDE3MiwwLDAsMCwxLjA0MDgzLDEuNDIzMSwxLjY1NTQ3LDEuNjU1NDcsMCwwLDAsLjU1MjMxLjA5NjE5LDEuNDgzNTIsMS40ODM1MiwwLDAsMCwxLjE2NS0uNTUyMzcsMS42MTI0OCwxLjYxMjQ4LDAsMCwwLC4yODIyOS0uNTEzMjQsMTAuNzc2MTEsMTAuNzc2MTEsMCwwLDAtMS45Mjg1My0xMC41MjI3MSwxMC41NjIwOSwxMC41NjIwOSwwLDAsMC04LjU3OTQtNC4wNjc1cS0uMjU0NywwLS41MTI5NC4wMDk1OGExMS4wNjQyOCwxMS4wNjQyOCwwLDAsMC0xLjQyMDUzLDIxLjkzODQ4LDExLjUyMjE5LDExLjUyMjE5LDAsMCwwLDIuMDIyNy4xODMyOSwxMS4wMTcyNywxMS4wMTcyNywwLDAsMCw1LjU0NTU5LTEuNTMxLDIuMjI2LDIuMjI2LDAsMCwxLDEuMTAyNTQtLjMwOTU3LDEuODIxMjQsMS44MjEyNCwwLDAsMSwxLjYwODI4Ljk1ODYyLDEuODcsMS44NywwLDAsMS0uNzMxLDIuNTY2NTMsMTQuMjU1MzQsMTQuMjU1MzQsMCwwLDEtNC4zMTM0MSwxLjcyNjEzLDE1LjMxODg2LDE1LjMxODg2LDAsMCwxLTMuMjQ2MjIuMzUxLDE0Ljg0MjY4LDE0Ljg0MjY4LDAsMCwxLTE0LjU0MzQ2LTExLjc0LDE0Ljg2NDU5LDE0Ljg2NDU5LDAsMCwxLDExLjI5MDI5LTE3LjY3NTksMTQuODI2NzIsMTQuODI2NzIsMCwwLDEsMTcuODAyMTgsMTEuNzc3QTE0LjMyNTUsMTQuMzI1NSwwLDAsMSw4OS4wMjk5LDk2LjM3OVoiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTc1LjAxOTUzLDg3LjkxMDc3YTMuNjYzNzYsMy42NjM3NiwwLDEsMC0uMDIyMjgsNy4zMjc0NWwuMDA0ODguMjQ5NTcuMDA0ODgtLjAwMDQ5di0uMjQ5MDhhMy42NzM0OSwzLjY3MzQ5LDAsMCwwLDMuNjUyMjMtMy42NDkxN0EzLjY2NTgzLDMuNjY1ODMsMCwwLDAsNzUuMDE5NTMsODcuOTEwNzdaIi8+PC9zdmc+
activated: True
anonymous: False
linkTarget: "samewindow"
displayName:
en_US: "Protect your account"
de_DE: "Kontozugang schützen"
description:
en_US: "Protect your account"
de_DE: "Kontozugang schützen"
link:
- - "en_US"
- "#/selfservice/protectaccount"
---
action: "create"
module: "portals/entry"
position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service-password-forgotten"
icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTExOS4yMjg5MSw3NC40OTg1NWgtNy4xNDAyQTQxLjcxNjg4LDQxLjcxNjg4LDAsMCwwLDcyLjc4NzMyLDMzLjQwODM0YTMuMDI1NDksMy4wMjU0OSwwLDAsMC0uNTQ2NjktLjA3OTY1Yy0uMzEwMTktLjAxMzc5LS42MTIxMy4wMTI2NC0uOTIxLjAwNTc0LS4zMDc2MS0uMDA2NzgtLjYwNjkzLS4wNDYwOC0uOTE2MDctLjA0NjA4LS40Mjk0NSwwLS44NTIwNS4wNDY4MS0xLjI3OTc5LjA1OTg3LS42Mzc1MS4wMTkwNS0xLjI3MjU4LjA0MTA4LTEuOTAzMDcuMDg4ODctLjcxNzcyLjA1NDQ0LTEuNDI4LjE0MDI2LTIuMTM4NjguMjMxMTQtLjYyNC4wOC0xLjI0NzkyLjE1NTQ2LTEuODYzNTguMjYzMDYtLjc0Mjg2LjEyOTIxLTEuNDc0MTguMjk3MTItMi4yMDY3My40NjU4OC0uNTUxMTUuMTI3NzUtMS4xMDUyOC4yNDMtMS42NDgxOS4zOTI1OC0uODM1NTcuMjI4NzYtMS42NTQxOC41MDQ3Ni0yLjQ3MjQxLjc4NDc5LS40MTMzMy4xNDIzNC0uODMzNjIuMjY2NDgtMS4yNDExNS40MjEyNy0uOTkwNzMuMzc0NDUtMS45NTg1Ni44MDI5MS0yLjkxODE1LDEuMjUyNDQtLjIxNjYyLjEwMTgtLjQ0MS4xODc4Ni0uNjU1NjQuMjkzMzNhNDEuNjg2ODIsNDEuNjg2ODIsMCwwLDAtMTAuMDQxNjMsNi44Nzg2Yy0uMDUxODguMDQ4LS4wNzEuMTE0MzItLjExODc3LjE2NTFBNDEuNTY2LDQxLjU2NiwwLDAsMCwyOC43MzAxOSw3My4xNjI4NmMtLjAyMDM5LjQ2NC4wMTE4NC45MjEuMDA2NTMsMS4zODMxOGEyLjk5OTUyLDIuOTk5NTIsMCwwLDAtLjA0NTg0LjQ1NGMwLC4zNTE5My4wNDQxMy42OTI4MS4wNTI4NiwxLjA0MjcyLjAxODkyLjc5OC4wNTY4OCwxLjU5MTI1LjEyMDYsMi4zODE3OC4wNDY4Mi41NzI1MS4xMDU4NCwxLjE0LjE3NTY2LDEuNzA1ODdxLjE1NDE5LDEuMjY0LjM4NCwyLjUwOWMuMDkxMy40OTEuMTg5MzMuOTc4LjI5Nzg1LDEuNDYyODlxLjI5NTgsMS4zMzE5MS42NzkzMiwyLjYzNmMuMTIwNzMuNDEwNjQuMjQ0ODcuODE4NDguMzc3ODEsMS4yMjM4MnEuNDQ2NCwxLjM2NjYuOTg4NywyLjY5NjE2Yy4xNDMuMzUxNjkuMjg4MDkuNzAxLjQ0MDM3LDEuMDQ3ODVxLjU4ODc4LDEuMzQzLDEuMjc0NiwyLjY0MTg1Yy4xNzMyOC4zMjk0Ny4zNDkxMi42NTYuNTMxLjk4MDE2cS43MDQ1OCwxLjI1NTc0LDEuNDk4NTMsMi40NjQxOC4zMzEzNC41MDU0Ni42NzYxNS45OTk2OS43OTM0LDEuMTM2MjcsMS42NjUsMi4yMjVjLjI3NTM5LjM0Mzc1LjU1NjM5LjY4MDI5Ljg0MjIyLDEuMDE1MDcuMzE5NzYuMzc0NDUuNjA3MTguNzY5MjkuOTQxMjgsMS4xMzQyOGEzLjAyNjE2LDMuMDI2MTYsMCwwLDAsLjQ1NjM2LjQwMzA4LDQxLjYxNTc5LDQxLjYxNTc5LDAsMCwwLDU5LjgwNDQ1LjkyNTU5LDMuMDIwODksMy4wMjA4OSwwLDEsMC00LjI3MjIyLTQuMjcyMTVBMzUuNjEzMzEsMzUuNjEzMzEsMCwwLDEsNDMuMjg0Miw5OC4xMTEyOWMtLjI0MTg4LS4yODM1MS0uNDgwMjgtLjU2OTEtLjcxMjQ2LS44NTg3MXEtLjc0NjE2LS45MzExOC0xLjQzMDQ4LTEuOTExNzQtLjI5MjIzLS40MTktLjU3MTQxLS44NDQ3OS0uNjc4MjMtMS4wMzQyNy0xLjI4Njg3LTIuMTE1NzhjLS4xNTQ0OC0uMjc1NTItLjMwMzgzLS41NTMxLS40NTA2Mi0uODMyMTZxLS41ODQtMS4xMDk5LTEuMDkxOTItMi4yNjM0MmMtLjEyOTctLjI5NTc4LS4yNTM4NC0uNTkzNjMtLjM3NTMtLjg5Mjc3cS0uNDYxNy0xLjEzNDc5LS44NDYtMi4zMDcxOS0uMTcwMzgtLjUyMTg1LS4zMjM4NS0xLjA0OTA3LS4zMjUzOC0xLjEwNzUxLS41Nzg1LTIuMjQ0NTctLjE0MDM0LS42MzExNS0uMjU4LTEuMjY3ODhjLS4xMzAwNy0uNzAwMjUtLjIzNjI3LTEuNDA4MzItLjMyNDc3LTIuMTIyMDctLjA2MDYxLS40OTUxOC0uMTEzMzQtLjk5MTU4LS4xNTMzMi0xLjQ5MS0uMDUzNTktLjY1OC0uMDgzNjgtMS4zMjIzOC0uMTAwNzctMS45ODk4Ni0uMDIwMi0uODI4NS0uMDQ4MjItMS42NTYwNy0uMDExMjMtMi40OTE4OUEzNS43MjEyLDM1LjcyMTIsMCwwLDEsNTcuOTAxODIsNDEuNjA3Yy4xNjYtLjA2MjA3LjMzNjQ5LS4xMTEyLjUwMzQyLS4xNzA4NC44NzUzLS4zMTQ0NSwxLjc2MzEyLS42MDE1LDIuNjY3NDItLjg0Nzc3LjMzMy0uMDkwMDkuNjcxODEtLjE1OTU1LDEuMDA3NjktLjIzOTkzLjc1MDYxLS4xODEwOSwxLjUwNi0uMzQ4NjQsMi4yNzMyNS0uNDgxMi40NDE1OS0uMDc1NTcuODg3OTQtLjEyOTIyLDEuMzMzMzEtLjE4ODE4LjY4MTgzLS4wOTEyNCwxLjM2NjQtLjE3MjI0LDIuMDU4OS0uMjI0MTIuNDk3ODctLjAzNjg2Ljk5OS0uMDUzODMsMS41LS4wNzAwNy42NDc4OS0uMDIxMTcsMS4yOTgzNC0uMDI4MzgsMS45NTM2OC0uMDE0MTZhMzUuNjc4MywzNS42NzgzLDAsMCwxLDM0Ljg0Njg2LDM1LjEyNzg3SDk4Ljk1NzU0Yy0yLjIxNTUxLDAtMi43NDY0NiwxLjI4MTgtMS4xNzk4MSwyLjg0ODM5bDguNDY3MTEsOC40NjcxYTQuMDQwMDgsNC4wNDAwOCwwLDAsMCw1LjY5Njg0LDBsOC40NjcxNi04LjQ2NzFDMTIxLjk3NTM3LDc1Ljc4MDM1LDEyMS40NDQ1NCw3NC40OTg1NSwxMTkuMjI4OTEsNzQuNDk4NTVaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik01Ny4wMjQ2Miw3My4wMjMyN3EtLjAwMyw3LjY4OTMzLS4wMDA1NSwxNS4zNzg3M0EzLjM3NDkyLDMuMzc0OTIsMCwwLDAsNTkuODI2LDkxLjk2MTM4YS4zMTI3Ni4zMTI3NiwwLDAsMSwuMDg0ODQuMDU0OTNIODEuMTc1NTZjLjIyMDA5LS4wNjk1MS40NDMwNi0uMTMxMjIuNjU5ODUtLjIwOTgzQTMuMzIyNzcsMy4zMjI3NywwLDAsMCw4NC4wNTUsODguNzE5MTNxLjAxODg1LTcuOTcwODUtLjAwMi0xNS45NDE3MWEzLjM0ODQ1LDMuMzQ4NDUsMCwwLDAtMy4yODg4OC0zLjI4NTk1Yy0uMzg1NzQtLjAwOTM0LS43NzE5MS0uMDAxMzQtMS4yMDgxMi0uMDAxMzR2LS4zOTA1NmMwLTEuMzM3MjguMDAyMjUtMi42NzQ1Ni0uMDAwMzctNC4wMTE4NEE5LjAwODM2LDkuMDA4MzYsMCwwLDAsNjEuNjc3MjcsNjMuNDA4YTEyLjUyODU3LDEyLjUyODU3LDAsMCwwLS4xNDA1LDEuNzg0NzNjLS4wMTk5LDEuNDE3LS4wMDY0MSwyLjgzNDUzLS4wMDY0MSw0LjI5NTM1LS4zMzYsMC0uNjQ4NTYtLjAwMDQ5LS45NjExMi4wMDAxMkEzLjM4NDksMy4zODQ5LDAsMCwwLDU3LjAyNDYyLDczLjAyMzI3Wk03MS4wMjkxNCw4Ny41MjM4OGExLjM4MzQ4LDEuMzgzNDgsMCwwLDEtLjk0OTIyLjM2NTI0LDEuNDM5MzEsMS40MzkzMSwwLDAsMS0uOTcyNjYtLjM2MDM1LDEuMjY2NzEsMS4yNjY3MSwwLDAsMS0uNDE1LTEuMDA4NzksMS4zMDA2NiwxLjMwMDY2LDAsMCwxLC40MDEzNy0uOTY3NzgsMS4zNjA0MiwxLjM2MDQyLDAsMCwxLC45ODYzMy0uMzkyNThBMS4zNDA4NCwxLjM0MDg0LDAsMCwxLDcxLjQ0MDI3LDg2LjUyLDEuMjc1NDgsMS4yNzU0OCwwLDAsMSw3MS4wMjkxNCw4Ny41MjM4OFptMy40MDkxOC04LjQ1MjYzQTQuMTYzNjIsNC4xNjM2MiwwLDAsMSw3My42OTAyNyw4MC4wOHEtLjQzMzU5LjQyNDgtMS41NTY2NCwxLjQyODcxYTYuMTM4MjUsNi4xMzgyNSwwLDAsMC0uNDk3MDcuNDk3NTUsMi4wMzQ0NSwyLjAzNDQ1LDAsMCwwLS4yNzkzLjM5MjA5LDEuOTI0NTMsMS45MjQ1MywwLDAsMC0uMTQwNjIuMzU2Yy0uMDM0MTguMTE4NjUtLjA4NC4zMjc2NC0uMTUxMzcuNjI1NDlhMS4wMTU1NCwxLjAxNTU0LDAsMCwxLTEuMDg1OTQuOTQ5MjIsMS4xMTE3MiwxLjExMTcyLDAsMCwxLS43OTg4Mi0uMzEwMDYsMS4yMjA0OCwxLjIyMDQ4LDAsMCwxLS4zMjQyMi0uOTIyMzYsMy4yMzYxMywzLjIzNjEzLDAsMCwxLC44NjcxOC0yLjMxNCwxNC40Njg2NSwxNC40Njg2NSwwLDAsMSwxLjA1OTU3LTEuMDA4M2MuMzg4NjgtLjM0MDgyLjY3MDktLjU5ODE0Ljg0Mzc1LS43NzE0OGEyLjYyMTksMi42MjE5LDAsMCwwLC40Mzg0OC0uNTc5NTksMS40MDcxLDEuNDA3MSwwLDAsMCwuMTc3NzQtLjY5Mzg1LDEuNjExMDcsMS42MTEwNywwLDAsMC0uNTQzLTEuMjMxOTMsMS45ODIyMSwxLjk4MjIxLDAsMCwwLTEuNDAxMzctLjUwMjQ1LDEuOTM4LDEuOTM4LDAsMCwwLTEuNDc4NTIuNTA2ODQsNC4wNDk0NSw0LjA0OTQ1LDAsMCwwLS44MDM3MSwxLjQ5MjE5cS0uMzA5MDgsMS4wMzItMS4xNzY3NSwxLjAzMTc0YTEuMTU4MywxLjE1ODMsMCwwLDEtLjg2MzI5LS4zNjA4NCwxLjEwMjIxLDEuMTAyMjEsMCwwLDEtLjM1MTU2LS43ODAyOCwzLjMwMzc4LDMuMzAzNzgsMCwwLDEsLjU1NzYyLTEuNzU3MzIsNC4yODY0Myw0LjI4NjQzLDAsMCwxLDEuNjI0LTEuNDc0MTIsNS4xMTg4Niw1LjExODg2LDAsMCwxLDIuNDkyMTktLjU4NCw1LjMxOTA5LDUuMzE5MDksMCwwLDEsMi4zMzY5MS40ODgyOEEzLjc5MDIxLDMuNzkwMjEsMCwwLDEsNzQuMjAxLDc1Ljg4NTdhMy4yNTg2MSwzLjI1ODYxLDAsMCwxLC41NTI3NCwxLjgyNTY4QTIuODIxODIsMi44MjE4MiwwLDAsMSw3NC40MzgzMiw3OS4wNzEyNVpNNjQuNTQwNTUsNjguNTQ0NTdjLjAwMDA2LTEuMTYxMTMtLjAwNDg4LTIuMzIyMjYuMDAxMTYtMy40ODMzM2E1Ljk5ODU0LDUuOTk4NTQsMCwwLDEsMTEuOTA1NC0xLjEyNjQ3LDE1LjE5MjQ0LDE1LjE5MjQ0LDAsMCwxLC4wOTUsMi4wNjg4NWMuMDE0MSwxLjE0Ny4wMDM4NCwyLjI5NDQzLjAwMzg0LDMuNDY1MzlINjQuNTQwNTVaIi8+PC9zdmc+
activated: True
anonymous: True
linkTarget: "samewindow"
displayName:
en_US: "Password forgotten"
de_DE: "Passwort vergessen"
description:
en_US: "Password forgotten"
de_DE: "Passwort vergessen"
link:
- - "en_US"
- '#/selfservice/passwordforgotten'
---
action: "create"
module: "portals/category"
position: "cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service-password"
displayName:
en_US: "Passwords"
de_DE: "Passwörter"
entries:
- "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
- "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
- "cn=self-service-password-change,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
---
action: "create"
module: "portals/portal"
position: "cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
name: "self-service"
defaultLinkTarget: "samewindow"
displayName:
en_US: "Self Service"
de_DE: "Self Service"
showUmc: False
categories:
- "cn=self-service-profile,cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}"
- "cn=self-service-password,cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}"
---
action: "ensure_list_contains"
module: "portals/portal"
position: "cn=domain,cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}"
properties:
userLinks:
- "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
- "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
- "cn=self-service-password-change,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
- "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}"
42-readonly-user.yaml: |-
# Source: data-files/default/42-readonly-user.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
action: create
module: groups/group
position: cn=groups,{{ ldapBaseDn }}
properties:
name: "LDAPSearch Users"
---
action: create
module: users/ldap
position: cn=users,{{ ldapBaseDn }}
properties:
username: "readonly"
lastname: "LDAP-system-User"
password: {{ readonlyUserPassword }}
overridePWHistory: true
overridePWLength: true
---
# Source: nubus/charts/nubusStackDataUms/templates/configmap-ucr.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-stack-data-ums-ucr"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
data:
base.conf: |
ad/member: false
apache2/autostart: yes
apache2/documentroot: /var/www/
apache2/force_https/exclude/http_host/localhost: localhost
apache2/force_https/exclude/request_uri/mod-status: /server-status
apache2/force_https/exclude/request_uri/univention-portal: /univention/get
apache2/loglevel: info
apache2/maxclients: 150
apache2/startsite: univention/
auth/methods: ldap
directory/manager/rest/authorized-groups/domain-service-users: cn=Domain Service Users,cn=groups,dc=swp-ldap,dc=internal
directory/manager/rest/authorized-groups/iam-api-full-access: cn=IAM API - Full Access,cn=groups,dc=swp-ldap,dc=internal
directory/manager/rest/debug_level: 5
directory/manager/rest/ldap-connection/user-read/start-tls: 0
directory/manager/rest/show-tracebacks: false
directory/manager/starttls: 0
directory/manager/templates/alphanum/whitelist: ""
directory/manager/user/activate_ldap_attribute_mailForwardCopyToSelf: yes
directory/manager/user_group/uniqueness: true
directory/manager/web/language: de_DE.UTF-8
directory/manager/web/modules/autosearch: 1
directory/manager/web/modules/computers/computer/add/default: computers/windows
directory/manager/web/modules/groups/group/caching/uniqueMember/timeout: 300
directory/manager/web/modules/groups/group/checks/circular_dependency: yes
directory/manager/web/modules/search/advanced_on_open: false
directory/manager/web/modules/users/user/add/default: cn=openDesk User,cn=templates,cn=univention,dc=swp-ldap,dc=internal
directory/manager/web/modules/users/user/properties/description/syntax: TextArea
directory/manager/web/modules/users/user/properties/firstname/required: true
directory/manager/web/modules/users/user/properties/homePostalAddress/syntax: postalAddress
directory/manager/web/modules/users/user/properties/mailPrimaryAddress/required: true
directory/manager/web/modules/users/user/properties/username/syntax: uid
directory/manager/web/modules/users/user/search/autosearch: True
directory/manager/web/modules/users/user/wizard/property/invite/default: True
directory/manager/web/modules/users/user/wizard/property/overridePWLength/default: False
directory/manager/web/modules/users/user/wizard/property/overridePWLength/visible: False
directory/manager/web/modules/users/user/wizard/property/pwdChangeNextLogin/default: True
directory/manager/web/modules/users/user/wizard/property/pwdChangeNextLogin/visible: False
directory/manager/web/modules/wizard/disabled: No
directory/manager/web/modules/wizards/disabled: no
directory/manager/web/sizelimit: 2000
directory/reports/cleanup/age: 43200
directory/reports/cleanup/cron: 0 0 * * *
directory/reports/logo: /usr/share/univention-directory-reports/univention_logo.png
directory/reports/templates/csv/computer1: computers/computer "CSV Report" /etc/univention/directory/reports/default computers.csv
directory/reports/templates/csv/group1: groups/group "CSV Report" /etc/univention/directory/reports/default groups.csv
directory/reports/templates/csv/user1: users/user "CSV Report" /etc/univention/directory/reports/default users.csv
directory/reports/templates/pdf/computer1: computers/computer "PDF Document" /etc/univention/directory/reports/default computers.rml
directory/reports/templates/pdf/group1: groups/group "PDF Document" /etc/univention/directory/reports/default groups.rml
directory/reports/templates/pdf/user1: users/user "PDF Document" /etc/univention/directory/reports/default users.rml
domainname: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
groups/default/domainadmins: Domain Admins
groups/default/printoperators: Printer-Admins
hostname: portal
kerberos/realm: stub_value
ldap/acl/nestedgroups: yes
ldap/acl/read/anonymous: no
ldap/acl/slavepdc: yes
ldap/acl/user/password/change: no
ldap/attributeoptions: entry-,lang-
ldap/autostart: yes
ldap/base: dc=swp-ldap,dc=internal
ldap/cachesize: 20000
ldap/client/retry/count: 10
ldap/database/bdb/db_config_options: set_flags
ldap/database/bdb/set_flags: DB_LOG_AUTOREMOVE
ldap/database/internal/checkpoint: 0 1
ldap/database/internal/envflags: nosync
ldap/database/mdb/maxsize: 4295000000
ldap/database/type: mdb
ldap/debug/level: none
ldap/hostdn: cn=admin,dc=swp-ldap,dc=internal
ldap/idlcachesize: 20000
ldap/idletimeout: 360
ldap/index/approx: cn,givenName,mail,sn,uid
ldap/index/autorebuild: yes
ldap/index/eq: aRecord,automountInformation,cNAMERecord,cn,description,dhcpHWAddress,displayName,entryUUID,gidNumber,givenName,homeDirectory,krb5PrincipalName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,memberUid,objectClass,ou,pTRRecord,relativeDomainName,sambaAcctFlags,sambaDomainName,sambaGroupType,sambaPrimaryGroupSID,sambaSID,sambaSIDList,secretary,shadowExpire,sn,uid,uidNumber,uniqueMember,univentionCanonicalRecipientRewriteEnabled,univentionDataType,univentionInventoryNumber,univentionLicenseModule,univentionLicenseObject,univentionMailHomeServer,univentionNagiosHostname,univentionObjectFlag,univentionObjectType,univentionPolicyReference,univentionServerRole,univentionService,univentionShareGid,univentionShareSambaName,univentionShareWriteable,univentionUDMOptionModule,univentionUDMPropertyCLIName,univentionUDMPropertyCopyable,univentionUDMPropertyDefault,univentionUDMPropertyDeleteObjectClass,univentionUDMPropertyDoNotSearch,univentionUDMPropertyHook,univentionUDMPropertyLayoutOverwritePosition,univentionUDMPropertyLayoutOverwriteTab,univentionUDMPropertyLayoutPosition,univentionUDMPropertyLayoutTabAdvanced,univentionUDMPropertyLayoutTabName,univentionUDMPropertyLdapMapping,univentionUDMPropertyLongDescription,univentionUDMPropertyModule,univentionUDMPropertyMultivalue,univentionUDMPropertyObjectClass,univentionUDMPropertyOptions,univentionUDMPropertyShortDescription,univentionUDMPropertySyntax,univentionUDMPropertyTranslationLongDescription,univentionUDMPropertyTranslationShortDescription,univentionUDMPropertyTranslationTabName,univentionUDMPropertyValueMayChange,univentionUDMPropertyValueRequired,univentionUDMPropertyVersion,zoneName
ldap/index/pres: aRecord,automountInformation,cn,description,dhcpHWAddress,displayName,gidNumber,givenName,homeDirectory,krb5PrincipalName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,memberUid,name,objectClass,ou,relativeDomainName,shadowMax,sn,uid,uidNumber,uniqueMember,univentionMailHomeServer,univentionObjectFlag,univentionPolicyReference,univentionUDMPropertyCLIName,univentionUDMPropertyDefault,univentionUDMPropertyDeleteObjectClass,univentionUDMPropertyDoNotSearch,univentionUDMPropertyHook,univentionUDMPropertyLayoutOverwritePosition,univentionUDMPropertyLayoutOverwriteTab,univentionUDMPropertyLayoutPosition,univentionUDMPropertyLayoutTabAdvanced,univentionUDMPropertyLayoutTabName,univentionUDMPropertyLdapMapping,univentionUDMPropertyLongDescription,univentionUDMPropertyModule,univentionUDMPropertyMultivalue,univentionUDMPropertyObjectClass,univentionUDMPropertyOptions,univentionUDMPropertyShortDescription,univentionUDMPropertySyntax,univentionUDMPropertyTranslationLongDescription,univentionUDMPropertyTranslationShortDescription,univentionUDMPropertyTranslationTabName,univentionUDMPropertyValueMayChange,univentionUDMPropertyValueRequired,univentionUDMPropertyVersion,zoneName
ldap/index/quickmode: false
ldap/index/sub: aRecord,associatedDomain,automountInformation,cn,default,description,displayName,employeeNumber,givenName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,name,ou,pTRRecord,printerModel,relativeDomainName,sambaSID,sn,uid,univentionInventoryNumber,univentionOperatingSystem,univentionSyntaxDescription,univentionUDMPropertyLongDescription,univentionUDMPropertyShortDescription,zoneName
ldap/k5pwd: true
ldap/limits: users time.soft=-1 time.hard=-1
ldap/master/port: 389
ldap/master: ums-ldap-server-primary
ldap/maxopenfiles: 8192
ldap/monitor: false
ldap/overlay/lastbind/precision: 3600
ldap/overlay/lastbind: false
ldap/overlay/memberof/dangling: ignore
ldap/overlay/memberof/member: uniqueMember
ldap/overlay/memberof/memberof: memberOf
ldap/overlay/memberof/objectclass: posixGroup
ldap/overlay/memberof: true
ldap/policy/cron: 5 * * * *
ldap/ppolicy/enabled: false
ldap/ppolicy: false
ldap/pw-bcrypt: true
ldap/pwd_scheme_kinit: true
ldap/saml/service-providers: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/saml/metadata
ldap/server/name: ums-ldap-server-primary
ldap/server/port: 389
ldap/server/type: master
ldap/shadowbind/ignorefilter: (|(objectClass=univentionDomainController)(userPassword={KINIT}))
ldap/shadowbind: true
ldap/sizelimit: 400000
ldap/threads: 16
ldap/tls/ciphersuite: HIGH:MEDIUM:!aNULL:!MD5:!RC4
ldap/tls/dh/paramfile: /etc/ldap/dh_2048.pem
ldap/tls/minprotocol: 3.1
ldap/tool-threads: 1
ldap/translogfile: /var/lib/univention-ldap/listener/listener
license/base: dc=swp-ldap,dc=internal
locale/default: de_DE.UTF-8:UTF-8
locale: de_DE.UTF-8:UTF-8 en_US.UTF-8:UTF-8
password/hashing/bcrypt: true
password/hashing/method: SHA-512
password/quality/length/min: 8
password/quality/mspolicy: false
portal/auth-mode: saml
portal/paths: /univention/portal/, /univention/umc/, /univention/selfservice/
self-service/backend-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
self-service/ldap_attributes: jpegPhoto,mail,telephoneNumber,roomNumber,departmentNumber,st,homePhone,mobile,homePostalAddress
self-service/udm-rest-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
self-service/udm_attributes/birthday/readonly: true
self-service/udm_attributes/city/readonly: true
self-service/udm_attributes/departmentNumber/readonly: true
self-service/udm_attributes/displayName/readonly: true
self-service/udm_attributes/employeeNumber/readonly: true
self-service/udm_attributes/employeeType/readonly: true
self-service/udm_attributes/firstname/readonly: true
self-service/udm_attributes/lastname/readonly: true
self-service/udm_attributes/organisation/readonly: true
self-service/udm_attributes/postcode/readonly: true
self-service/udm_attributes/street/readonly: true
self-service/udm_attributes/title/readonly: true
self-service/udm_attributes: jpegPhoto,e-mail,phone,roomnumber,departmentNumber,country,homeTelephoneNumber,mobileTelephoneNumber,homePostalAddress
self-service/web/enabled: yes
server/role: domaincontroller_master
slapd/port: 389
ssl/ca/cipher: aes256
ssl/common: Univention Corporate Server Root CA (ID: XXX)
ssl/country: DE
ssl/crl/interval: 7
ssl/crl/validity: 10
ssl/default/bits: 2048
ssl/default/days: 1825
ssl/default/hashfunction: sha256
ssl/email: ssl@example.org
ssl/host/objectclass: univentionDomainController,univentionMemberServer,univentionClient
ssl/locality: DE
ssl/organization: DE
ssl/organizationalunit: Univention Corporate Server
ssl/state: DE
ssl/update/expired: yes
ssl/validity/check: yes
ssl/validity/host: 20523
ssl/validity/root: 20523
ssl/validity/warning: 30
system/setup/showloginmessage: false
ucr/backup/enabled: yes
ucr/encoding/strict: true
ucs/server/languages/de_AT: Deutsch (Österreich)
ucs/server/languages/de_CH: Deutsch (Schweiz)
ucs/server/languages/de_DE: Deutsch
ucs/server/languages/en_GB: English (United Kingdom)
ucs/server/languages/en_US: English
ucs/server/robots/disallow: /
ucs/server/saml-idp-server/primary.example.org: primary.example.org
ucs/server/sso/fqdn: id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
ucs/server/sso/virtualhost: true
ucs/web/license/requested: true
ucs/web/theme: light
umc/cookie-banner/show: false
umc/http/allowed-session-overtake/ranges: 0.0.0.0/0,::/0
umc/http/autostart: yes
umc/http/content-security-policy/connect-src: 'self'
umc/http/content-security-policy/default-src: 'unsafe-eval'
umc/http/content-security-policy/font-src: 'self'
umc/http/content-security-policy/form-action: 'self'
umc/http/content-security-policy/frame-ancestors: 'self'
umc/http/content-security-policy/frame-src: 'self' https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
umc/http/content-security-policy/img-src: *
umc/http/content-security-policy/media-src: *
umc/http/content-security-policy/object-src: 'self'
umc/http/content-security-policy/script-src: 'self' 'unsafe-inline' 'unsafe-eval' https://www.youtube.com/ https://s.ytimg.com/
umc/http/content-security-policy/style-src: 'self' 'unsafe-inline'
umc/http/cookie/samesite: Strict
umc/http/enforce-secure-cookie: true
umc/http/enforce-session-cookie: true
umc/http/interface: 0.0.0.0
umc/http/port: 8090
umc/http/response-timeout: 310
umc/http/session/timeout: 28800
umc/http/show_tracebacks: false
umc/login/content-security-policy/frame-ancestors: 'self'
umc/login/links/forgot_your_password/enabled: true
umc/login/links/how_do_i_login/enabled: true
umc/login/links/login_without_sso/enabled: true
umc/login/links/login_without_sso/text/de: Ohne Single Sign-On anmelden
umc/login/links/login_without_sso/text: Login without Single Sign On
umc/login/password-complexity-message/de: Das Passwort muss mindestens 8 Zeichen lang sein und darf keine Zahlenabfolge oder ganze Worte enthalten, wie '1234Test'.
umc/login/password-complexity-message/en: Password must be at least 8 characters long and cannot include a number series or regular words, like '1234Test'.
umc/module/debug/level: 2
umc/module/timeout: 600
umc/module/udm/oxmail/oxcontext/disabled: True
umc/module/udm/portals/all/disabled: True
umc/module/udm/users/self/disabled: true
umc/saml/idp-server: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor
umc/saml/idp-server-internal: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor
umc/saml/in-memory-identity-cache: false
umc/saml/schemes: https
umc/saml/sp-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
umc/saml/trusted/sp/primary.example.org: primary.example.org
umc/self-service/account-deregistration/blacklist/groups: Administrators,Domain Admins
umc/self-service/account-deregistration/email/subject: Account deletion
umc/self-service/account-deregistration/enabled: false
umc/self-service/account-deregistration/whitelist/groups: Domain Users
umc/self-service/account-registration/backend/enabled: false
umc/self-service/account-registration/frontend/enabled: false
umc/self-service/account-registration/udm_attributes/required: lastname,username
umc/self-service/account-registration/udm_attributes: firstname,lastname,username
umc/self-service/account-registration/usercontainer: cn=self registered users,dc=swp-ldap,dc=internal
umc/self-service/account-verification/backend/enabled: false
umc/self-service/account-verification/email/subject: Account verification
umc/self-service/account-verification/email/token_length: 64
umc/self-service/account-verification/email/webserver_address: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
umc/self-service/account-verification/frontend/enabled: false
umc/self-service/account-verification/next-steps/de: Weiter zum Univention Portal.
umc/self-service/account-verification/next-steps: Continue to the Univention Portal.
umc/self-service/allow-authenticated-use: true
umc/self-service/content-security-policy/frame-ancestors: 'self'
umc/self-service/email-change-notification/email/subject: Account recovery email changed
umc/self-service/enabled: yes
umc/self-service/invitation/enabled: true
umc/self-service/memcached/socket: memcached
umc/self-service/memcached/username:
umc/self-service/passwordchange/frontend/enabled: yes
umc/self-service/passwordreset/backend/enabled: true
umc/self-service/passwordreset/email/enabled: yes
umc/self-service/passwordreset/email/sender_address: Password Reset Service
umc/self-service/passwordreset/email/server/port: 25
umc/self-service/passwordreset/email/server/starttls: false
umc/self-service/passwordreset/email/server/user: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
umc/self-service/passwordreset/email/server: postfix.yschmidt-opendesk-argo.svc.cluster.local
umc/self-service/passwordreset/email/subject: Password reset
umc/self-service/passwordreset/email/text_file: /usr/share/univention-self-service/email_bodies/passwordreset_email_body.txt
umc/self-service/passwordreset/email/token_length: 64
umc/self-service/passwordreset/email/webserver_address: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
umc/self-service/passwordreset/external/enabled: no
umc/self-service/passwordreset/external/token_length: 64
umc/self-service/passwordreset/frontend/enabled: yes
umc/self-service/passwordreset/limit/per_user/day: 120
umc/self-service/passwordreset/limit/per_user/hour: 60
umc/self-service/passwordreset/limit/per_user/minute: 10
umc/self-service/passwordreset/limit/total/day: 1000
umc/self-service/passwordreset/limit/total/hour: 200
umc/self-service/passwordreset/limit/total/minute: 120
umc/self-service/passwordreset/sms/enabled: no
umc/self-service/passwordreset/sms/token_length: 12
umc/self-service/passwordreset/token_validity_period: 172800
umc/self-service/passwordreset/whitelist/groups: Domain Users
umc/self-service/postgresql/database: selfservice
umc/self-service/postgresql/hostname: postgresql
umc/self-service/postgresql/port: 5432
umc/self-service/postgresql/username: selfservice_user
umc/self-service/profiledata/blacklist/groups: Administrators,Domain Admins
umc/self-service/profiledata/enabled: true
umc/self-service/profiledata/whitelist/groups: Domain Users
umc/self-service/protect-account/backend/enabled: true
umc/self-service/protect-account/frontend/enabled: yes
umc/self-service/service-specific-passwords/backend/enabled: false
umc/server/autostart: yes
umc/server/debug/level: 2
umc/server/processes: 1
umc/server/upload/max: 2048
umc/server/upload/min_free_space: 51200
umc/web/appliance/fast_setup_mode: true
umc/web/cache_bust: 1619020256
umc/web/favorites/default: welcome,udm:users/user,udm:groups/group,udm:computers/computer,appcenter:appcenter,updater
umc/web/feedback/description: [UMC-Feedback] Traceback
umc/web/feedback/mail: feedback@univention.de
umc/web/hooks/univention-management-console-module-passwordchange: passwordchange
umc/web/hooks/univention-self-service: passwordreset
umc/web/hooks/univention-web-js: default_menu_entries
umc/web/language: de_DE.UTF-8:UTF-8
umc/web/piwik: false
umc/web/sso/enabled: true
umc/web/sso/newwindow: true
umc/web/startupdialog: false
umc/web/title: Portal - openDesk
update/available: false
update/reboot/required: false
uuid/license: 00000000-0000-0000-0000-000000000000
uuid/system: 00000000-0000-0000-0000-000000000000
version/erratalevel: 0
version/patchlevel: 5
version/version: 5.0
base-defaults.conf: |
# This file is empty on purpose
# And needs to have at least two lines
---
# Source: nubus/charts/nubusStackDataUms/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-stack-data-ums"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
data:
UDM_API_URL: "http://ums-udm-rest-api:9979/udm/"
UDM_API_USER: "cn=admin"
UDM_API_PASSWORD_FILE: "/run/secrets/univention.de/data-loader/udm_secret"
UDM_API_PORT: "9979"
---
# Source: nubus/charts/nubusUdmListener/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-provisioning-udm-listener
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-udm-listener
helm.sh/chart: nubusUdmListener-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
data:
CA_CERT: ""
CA_CERT_FILE: ""
DEBUG_LEVEL: "2"
LDAP_BASE_DN: "dc=swp-ldap,dc=internal"
LDAP_PASSWORD: ""
LDAP_PASSWORD_FILE: "/var/secrets/ldap_secret"
LDAP_HOST: "ums-ldap-server-primary-notifier"
LDAP_HOST_DN: "cn=admin,dc=swp-ldap,dc=internal"
LDAP_PORT: "389"
NATS_HOST: "ums-provisioning-nats"
NATS_PORT: "4222"
NATS_MAX_RECONNECT_ATTEMPTS: "5"
PROVISIONING_API_HOST: "ums-provisioning-api"
PROVISIONING_API_PORT: "80"
NOTIFIER_SERVER: "ums-ldap-notifier"
TLS_MODE: "off"
...
---
# Source: nubus/charts/nubusUdmListener/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-provisioning-udm-listener-files"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-udm-listener
helm.sh/chart: nubusUdmListener-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
data:
base.conf: |
# univention_ base.conf
cron/autostart: yes
server/role: memberserver
ldap/master: ums-ldap-server-primary-notifier
ldap/master/port: 389
ldap/hostdn: cn=admin,dc=swp-ldap,dc=internal
ldap/base: dc=swp-ldap,dc=internal
uldap/start-tls: 0
listener/debug/level: 2
# end of univention_ base.conf
base-forced.conf: |
base-ldap.conf: |
base-schedule.conf: |
base-defaults.conf: |
ldap.conf: |
TLS_REQCERT never
BASE dc=swp-ldap,dc=internal
...
---
# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-udm-rest-api"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
annotations:
intents.otterize.com/service-name: ums-udm-rest-api
data:
LDAP_SECRET_FILE: ""
MACHINE_SECRET_FILE: ""
# used by the load-join-data job
UDM_API_URL: 'http://ums-udm-rest-api/udm/'
# This is hard-coded to be cn=admin in UCS
UDM_API_USER: "cn=admin"
UDM_API_PASSWORD_FILE: ""
...
---
# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-udm-rest-api-ldap-conf
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
annotations:
intents.otterize.com/service-name: ums-udm-rest-api
data:
ldap.conf: |
URI ldap://ums-ldap-server
BASE dc=swp-ldap,dc=internal
TLS_REQCERT never
...
---
# Source: nubus/charts/nubusUmcServer/templates/configmap-proxy.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-umc-server-proxy"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
data:
traefik.yaml: |
global:
checkNewVersion: false
sendAnonymousUsage: false
api:
dashboard: false
log:
level: INFO
accessLog:
filePath: /dev/stdout
ping:
entryPoint: http
entryPoints:
http:
address: ":8080"
providers:
file:
filename: /etc/traefik/dynamic.yaml
watch: false
dynamic.yaml: |
http:
routers:
umc-server:
service: umc-server
rule: PathPrefix(`/`)
services:
umc-server:
loadBalancer:
sticky:
cookie:
name: traefik_session
servers:
- url: http://ums-umc-server-0:8090
...
---
# Source: nubus/charts/nubusUmcServer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-umc-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
data:
LDAP_SECRET_FILE: "/etc/ldap.secret"
MACHINE_SECRET_FILE: "/etc/machine.secret"
PRIVATE_KEY_FILE: "/var/secrets/ssl/tls.key"
CA_CERT_FILE: "/var/secrets/ca_cert"
CERT_PEM_FILE: "/var/secrets/ssl/tls.crt"
SMTP_SECRET_FILE: "/var/secrets/smtp_secret"
---
# Source: nubus/charts/nubusUmcServer/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: ums-umc-server-pw-reset-email-body
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
data:
passwordreset_email_body.txt: |-
Sehr geehrte Benutzerin, sehr geehrter Benutzer,
Ihr Benutzername für {domainname} lautet: {username}
Sie erhalten diese Nachricht, da Sie Ihr Passwort zurücksetzen möchten oder weil Ihr Benutzer neu im System angelegt wurde.
Klicken Sie bitte auf den folgenden Link, um Ihr Passwort zu setzen:
https://{fqdn}/univention/portal/#/selfservice/newpassword/?token={token}&username={username}
Der genannte Link ist nur 48 Stunden gültig, danach fordern Sie ihn bitte erneut an unter:
https://{fqdn}/univention/portal/#/selfservice/passwordforgotten
Mit freundlichen Grüßen
Ihr {domainname} Passwort-Service
...
---
# Source: nubus/templates/postgresql-provisioning-configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "ums-postgresql-provisioning"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nubus
helm.sh/chart: nubus-1.8.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
data:
provision-databases.sh: |
#!/usr/bin/env sh
echo "Provisioning databases ..."
cat /provisioning-scripts/databases.list
for db in $(cat /provisioning-scripts/databases.list | sort | uniq); do
echo "Provisioning database $db ..."
psql -c "SELECT 'CREATE DATABASE $db;' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db');" -t | psql -v ON_ERROR_STOP=1
psql -v ON_ERROR_STOP=1 <<-EOSQL
SELECT * FROM pg_database;
EOSQL
done
provision-users.sh: |
#!/usr/bin/env sh
set -eu
echo "Provisioning users ..."
for user in $(cat /provisioning-scripts/users.list | sort | uniq); do
USER_PASSWORD=$(cat /provisioning/passwords/$user)
echo "Provisioning user $user ..."
psql -v ON_ERROR_STOP=1 <<-EOSQL
DO \$\$
BEGIN
IF NOT EXISTS (SELECT * FROM pg_user WHERE usename = '$user') THEN
CREATE USER $user WITH PASSWORD '$USER_PASSWORD';
END IF;
END \$\$;
EOSQL
psql -v ON_ERROR_STOP=1 <<-EOSQL
ALTER USER $user PASSWORD '$USER_PASSWORD';
EOSQL
done
echo "Provisioning user grants ..."
for grant in $(cat /provisioning-scripts/grants.list | sort | uniq); do
echo "Processing grant: $grant"
_USER=$(echo $grant | cut -d: -f1)
_DATABASE=$(echo $grant | cut -d: -f2)
_PRIVILEGES=$(echo $grant | cut -d: -f3)
echo "Provisioning '$_PRIVILEGES' privileges for user $_USER on database $_DATABASE ..."
case ${_PRIVILEGES} in
rw)
psql -v ON_ERROR_STOP=1 <<-EOSQL
GRANT ALL PRIVILEGES ON DATABASE $_DATABASE TO ${_USER};
\c $_DATABASE
GRANT ALL ON SCHEMA public TO ${_USER};
EOSQL
;;
ro)
psql -v ON_ERROR_STOP=1 <<-EOSQL
GRANT CONNECT ON DATABASE $_DATABASE TO ${_USER};
\c $_DATABASE
GRANT USAGE ON SCHEMA public TO ${_USER};
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ${_USER};
EOSQL
;;
*)
echo "Invalid privileges: ${_PRIVILEGES}"
exit 1
;;
esac
done
grants.list: |
notificationsapi_user:notificationsapi:rw
selfservice_user:selfservice:rw
keycloak_user:keycloak:rw
keycloak_extensions_user:keycloak_extensions:rw
guardianmanagementapi_user:guardianmanagementapi:rw
users.list: |
notificationsapi_user
selfservice_user
keycloak_user
keycloak_extensions_user
guardianmanagementapi_user
databases.list: |
notificationsapi
selfservice
keycloak
keycloak_extensions
guardianmanagementapi
---
# Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ums-ldap-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
rules:
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs:
- create
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs:
- watch
- get
- update
resourceNames: ["ldap-primary-leader"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["patch"]
resourceNames:
- ums-ldap-server-primary-0
- ums-ldap-server-primary-1
- apiGroups: [""]
resources: ["services"]
verbs: ["patch"]
resourceNames:
- ums-ldap-server-primary
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["create"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "update", "patch"]
resourceNames:
- ums-ldap-server-status
---
# Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ums-ldap-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
subjects:
- kind: ServiceAccount
name: ums-ldap-server
namespace: "yschmidt-opendesk-argo"
roleRef:
kind: Role
name: ums-ldap-server
apiGroup: rbac.authorization.k8s.io
---
# Source: nubus/charts/keycloak/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-keycloak"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak
helm.sh/chart: keycloak-0.9.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
clusterIP: None
ports:
- name: "http"
port: 8080
targetPort: http
protocol: "TCP"
- name: "https"
port: 8443
targetPort: https
protocol: "TCP"
- name: "ispn"
port: 7800
targetPort: ispn
protocol: "TCP"
selector:
app.kubernetes.io/name: keycloak
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusGuardian/templates/service-authorization-api.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-guardian-authorization-api
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-authorization-api
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-authorization-api
...
---
# Source: nubus/charts/nubusGuardian/templates/service-management-api.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-guardian-management-api
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-management-api
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-management-api
...
---
# Source: nubus/charts/nubusGuardian/templates/service-management-ui.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-guardian-management-ui
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-management-ui
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-management-ui
...
---
# Source: nubus/charts/nubusGuardian/templates/service-open-policy-agent.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-guardian-open-policy-agent
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-open-policy-agent
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-open-policy-agent
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/service-proxy.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-keycloak-extensions-proxy
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-proxy
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
spec:
type: ClusterIP
ports:
- port: 8181
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-keycloak-extensions-proxy
...
---
# Source: nubus/charts/nubusLdapNotifier/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-ldap-notifier"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-notifier
helm.sh/chart: nubusLdapNotifier-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "14.0.4"
annotations:
spec:
type: "ClusterIP"
ports:
- name: "notifier"
port: 6669
targetPort: "notifier"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-notifier
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusLdapServer/templates/service-notifier.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-ldap-server-primary-notifier
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
type: "ClusterIP"
ports:
- name: "ldap"
port: 389
targetPort: "ldap"
protocol: "TCP"
- name: "ldaps"
port: 636
targetPort: "ldaps"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: primary
statefulset.kubernetes.io/pod-name: ums-ldap-server-primary-0
...
---
# Source: nubus/charts/nubusLdapServer/templates/service-primary-mirror.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-ldap-server-primary-0
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
type: "ClusterIP"
ports:
- name: "ldap"
port: 389
targetPort: "ldap"
protocol: "TCP"
- name: "ldaps"
port: 636
targetPort: "ldaps"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: primary
statefulset.kubernetes.io/pod-name: "ums-ldap-server-primary-0" # This will be updated by the leader elector
...
---
# Source: nubus/charts/nubusLdapServer/templates/service-primary-mirror.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-ldap-server-primary-1
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
type: "ClusterIP"
ports:
- name: "ldap"
port: 389
targetPort: "ldap"
protocol: "TCP"
- name: "ldaps"
port: 636
targetPort: "ldaps"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: primary
statefulset.kubernetes.io/pod-name: "ums-ldap-server-primary-1" # This will be updated by the leader elector
...
---
# Source: nubus/charts/nubusLdapServer/templates/service-primary.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-ldap-server-primary
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
type: "ClusterIP"
ports:
- name: "ldap"
port: 389
targetPort: "ldap"
protocol: "TCP"
- name: "ldaps"
port: 636
targetPort: "ldaps"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: primary
statefulset.kubernetes.io/pod-name: "will-be-updated-by-elector" # This will be updated by the leader elector
...
---
# Source: nubus/charts/nubusLdapServer/templates/service-secondary.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-ldap-server-secondary
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
type: "ClusterIP"
clusterIP: "None"
publishNotReadyAddresses: true
ports:
- name: "ldap"
port: 389
targetPort: "ldap"
protocol: "TCP"
- name: "ldaps"
port: 636
targetPort: "ldaps"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: secondary
...
---
# Source: nubus/charts/nubusLdapServer/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-ldap-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
type: "ClusterIP"
ports:
- name: "ldap"
port: 389
targetPort: "ldap"
protocol: "TCP"
- name: "ldaps"
port: 636
targetPort: "ldaps"
protocol: "TCP"
selector:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: proxy
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-portal-frontend"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-frontend
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: portal-frontend
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusPortalServer/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-portal-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-server
helm.sh/chart: nubusPortalServer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-server
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: portal-server
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusProvisioning/charts/nats/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-provisioning-nats"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-nats
helm.sh/chart: nats-0.3.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-provisioning-nats
spec:
type: "ClusterIP"
ports:
- name: "client"
port: 4222
targetPort: "client"
protocol: "TCP"
- name: "cluster"
port: 6222
targetPort: "cluster"
protocol: "TCP"
- name: "monitor"
port: 8222
targetPort: "monitor"
protocol: "TCP"
selector:
app.kubernetes.io/name: provisioning-nats
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusProvisioning/charts/nats/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-provisioning-nats-headless"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-nats
helm.sh/chart: nats-0.3.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-provisioning-nats
spec:
type: "ClusterIP"
clusterIP: None
publishNotReadyAddresses: true
ports:
- name: "client"
port: 4222
targetPort: "client"
protocol: "TCP"
- name: "cluster"
port: 6222
targetPort: "cluster"
protocol: "TCP"
- name: "monitor"
port: 8222
targetPort: "monitor"
protocol: "TCP"
selector:
app.kubernetes.io/name: provisioning-nats
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusProvisioning/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: ums-provisioning-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-api
helm.sh/chart: nubusProvisioning-0.49.3
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-provisioning-api
...
---
# Source: nubus/charts/nubusUdmRestApi/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-udm-rest-api"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
annotations:
intents.otterize.com/service-name: ums-udm-rest-api
spec:
type: "ClusterIP"
clusterIP: None
ports:
- name: "http"
port: 9979
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: udm-rest-api
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusUmcGateway/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-umc-gateway"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-gateway
helm.sh/chart: nubusUmcGateway-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: umc-gateway
app.kubernetes.io/instance: ums
...
---
# Source: nubus/charts/nubusUmcServer/templates/service-proxy.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-umc-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-umc-server-proxy
app.kubernetes.io/version: 12.0.29
helm.sh/chart: nubusUmcServer-0.38.0
annotations:
intents.otterize.com/service-name: ums-umc-server
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-umc-server-proxy
...
---
# Source: nubus/charts/nubusUmcServer/templates/service-server.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "ums-umc-server-0"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
spec:
type: "ClusterIP"
clusterIP: None
ports:
- name: http
port: 8090
targetPort: http
protocol: TCP
selector:
app.kubernetes.io/name: umc-server
app.kubernetes.io/instance: ums
statefulset.kubernetes.io/pod-name: "ums-umc-server-0"
---
# Source: nubus/charts/nubusGuardian/templates/deployment-authorization-api.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-guardian-authorization-api
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-authorization-api
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-authorization-api
template:
metadata:
annotations:
checksum/config: d7947c399537b10083f81f1342a50f774514fb4d775fe3a1461ef55a3f7f5b68
intents.otterize.com/service-name: ums-guardian-authorization-api
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-authorization-api
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
serviceAccountName: ums-guardian
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
containers:
- name: "authorization-api"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api:2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-guardian-authorization-api
ports:
- name: http
containerPort: 8000
protocol: TCP
livenessProbe:
httpGet:
path: /guardian/authorization/openapi.json
port: http
initialDelaySeconds: 120
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: /guardian/authorization/openapi.json
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 15
failureThreshold: 30
successThreshold: 1
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: "secrets"
mountPath: "/var/secrets"
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "tmp"
emptyDir: {}
- name: "secrets"
secret:
secretName: "ums-guardian-udm-secret"
...
---
# Source: nubus/charts/nubusGuardian/templates/deployment-management-api.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-guardian-management-api
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-management-api
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-management-api
template:
metadata:
annotations:
checksum/config: edd431a7429fd937cb9b4a78c92bfa5f8f9aa3bdac936d3a0091e5813fe11b1b
intents.otterize.com/service-name: ums-guardian-management-api
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-management-api
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
serviceAccountName: ums-guardian
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
initContainers:
- name: "database-migrations"
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api:2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2"
command: ["alembic", "upgrade", "head"]
imagePullPolicy: "IfNotPresent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
envFrom:
- configMapRef:
name: ums-guardian-management-api
env:
- name: "SQL_PERSISTENCE_ADAPTER__PASSWORD"
valueFrom:
secretKeyRef:
name: "ums-guardian-postgresql-opendesk-credentials"
key: "guardianDatabasePassword"
containers:
- name: "management-api"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api:2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-guardian-management-api
env:
- name: "SQL_PERSISTENCE_ADAPTER__PASSWORD"
valueFrom:
secretKeyRef:
name: "ums-guardian-postgresql-opendesk-credentials"
key: "guardianDatabasePassword"
ports:
- name: http
containerPort: 8000
protocol: TCP
livenessProbe:
httpGet:
path: /guardian/management/openapi.json
port: http
initialDelaySeconds: 120
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: /guardian/management/openapi.json
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 15
failureThreshold: 30
successThreshold: 1
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: "secrets"
mountPath: "/var/secrets"
- name: "bundles"
mountPath: "/guardian_service_dir/bundle_server"
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "bundles"
emptyDir: {}
- name: "tmp"
emptyDir: {}
- name: "secrets"
secret:
secretName: ums-guardian-keycloak-client-secret
...
---
# Source: nubus/charts/nubusGuardian/templates/deployment-management-ui.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-guardian-management-ui
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-management-ui
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-management-ui
template:
metadata:
annotations:
checksum/config: f57692262288fcf0ef25edb2babd27bd672597a50143c7e63a88dc67ea12fcd1
intents.otterize.com/service-name: ums-guardian-management-ui
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-management-ui
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
serviceAccountName: ums-guardian
initContainers:
- name: "app-configuration"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui:2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
env:
- name: "SKIP_CONFIG_GENERATION"
value: "TRUE"
envFrom:
- configMapRef:
name: ums-guardian-management-ui
command:
- sh
- -c
- '/entrypoint.sh; cp -a /app/* /target/app/'
volumeMounts:
# NOTE: using target approach
- name: "app-config"
mountPath: "/target/app"
containers:
- name: "management-ui"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui:2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-guardian-management-ui
volumeMounts:
- name: "app-config"
mountPath: "/app"
- name: "nginx-conf"
mountPath: "/etc/nginx/sites-enabled/default"
subPath: "nginx.conf"
- name: "var-lib"
mountPath: "/var/lib/nginx"
- name: "var-run"
mountPath: "/var/run"
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 120
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 15
failureThreshold: 30
successThreshold: 1
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: "app-config"
emptyDir: { }
# NOTE: Workaround for removing the content of the entrypoint
- name: "var-lib"
emptyDir: { }
- name: "var-run"
emptyDir: { }
- name: "nginx-conf"
configMap:
name: ums-guardian-nginx-conf
...
---
# Source: nubus/charts/nubusGuardian/templates/deployment-open-policy-agent.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-guardian-open-policy-agent
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-open-policy-agent
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-guardian-open-policy-agent
template:
metadata:
annotations:
checksum/config: f8fd5444dd86861996f4ea5d4e7590c2fe5e2030ad20fdace15858bd616a683d
intents.otterize.com/service-name: ums-ums-open-policy-agent
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-guardian-open-policy-agent
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
spec:
serviceAccountName: ums-guardian
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
containers:
- name: "open-policy-agent"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa:2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-guardian-open-policy-agent
ports:
- name: http
containerPort: 8181
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 120
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 15
failureThreshold: 30
successThreshold: 1
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-handler.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-keycloak-extensions-handler
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-handler
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-keycloak-extensions-handler
template:
metadata:
annotations:
checksum/config: 3e9f8de9771f7e6068fc133a5cc89893614dd7763313d6660a5e2c2c42922828
intents.otterize.com/service-name: ums-keycloak-extensions-handler
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-handler
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
spec:
serviceAccountName: ums-keycloak-extensions-handler
containers:
- name: "keycloak-bfp-handler"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler:0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c"
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: ums-keycloak-extensions-handler
env:
- name: KC_USER
value: kcadmin
- name: KC_PASS
valueFrom:
secretKeyRef:
name: ums-opendesk-keycloak-credentials
key: "admin_password"
- name: POSTGRES_USER
value: keycloak_extensions_user
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: ums-keycloak-extensions-postgresql-opendesk-credentials
key: "umcKeycloakExtensionsDatabasePassword"
- name: SMTP_USERNAME
value: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
- name: SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: ums-keycloak-extensions-smtp-opendesk-credentials
key: "umcKeycloakExtensionsSmtpPassword"
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-proxy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-keycloak-extensions-proxy
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-proxy
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-keycloak-extensions-proxy
template:
metadata:
annotations:
checksum/config: 30f8314e918a1ce1b9adcfb7e6d8e1fc74ddd9ea8c21456c2e75892908693bf9
intents.otterize.com/service-name: ums-keycloak-extensions-proxy
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-proxy
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
spec:
serviceAccountName: ums-keycloak-extensions-proxy
containers:
- name: "keycloak-bfp-proxy"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy:0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056"
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: ums-keycloak-extensions-proxy
env:
- name: KC_USER
value: kcadmin
- name: KC_PASS
valueFrom:
secretKeyRef:
name: ums-opendesk-keycloak-credentials
key: admin_password
- name: POSTGRES_USER
value: keycloak_extensions_user
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: ums-keycloak-extensions-postgresql-opendesk-credentials
key: umcKeycloakExtensionsDatabasePassword
ports:
- name: http
containerPort: 8181
protocol: TCP
volumeMounts:
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
volumes:
...
---
# Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-ldap-server-proxy
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
ldap-server-type: proxy
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
replicas: 2
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: proxy
template:
metadata:
annotations:
checksum/configmap: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9
checksum/configmap-proxy: 9fcd0b7e145f1ff264a865f93ec51a51b2417be18e21df91db3f35015c37d4fc
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
ldap-server-type: proxy
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: ldap-server-type
operator: In
values:
- proxy
topologyKey: kubernetes.io/hostname
weight: 100
securityContext:
fsGroup: 102
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-ldap-server
terminationGracePeriodSeconds: 20
initContainers:
- name: "univention-compatibility"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- 'cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/'
volumeMounts:
- name: usr-share-univention-ldap-volume
mountPath: /target/usr/share/univention-ldap
- name: etc-ldap-volume
mountPath: /target/etc/ldap
- name: etc-univention-volume
mountPath: /target/etc/univention
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema
cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "wait-for-secondary"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-ldap-server
- configMapRef:
name: ums-ldap-server-proxy
env:
- name: LDAP_CN_ADMIN_PW
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
command:
- bash
- -c
- '/scripts-proxy/wait-for-secondary.sh'
volumeMounts:
- name: proxy-scripts-volume
mountPath: /scripts-proxy
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: "wait-for-saml-metadata"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
command:
- "/bin/bash"
- "/scripts/wait-for-saml-metadata.sh"
envFrom:
- configMapRef:
name: ums-ldap-server
volumeMounts:
- name: scripts-volume
mountPath: /scripts
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
containers:
- name: "openldap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-ldap-server
- configMapRef:
name: ums-ldap-server-proxy
env:
- name: LDAP_CN_ADMIN_PW
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
ports:
- name: ldap
containerPort: 389
protocol: TCP
- name: ldaps
containerPort: 636
protocol: TCP
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
volumeMounts:
- name: usr-share-univention-ldap-volume
mountPath: /usr/share/univention-ldap
- name: usr-share-saml-volume
mountPath: /usr/share/saml
- name: etc-ldap-volume
mountPath: /etc/ldap
- name: etc-univention-volume
mountPath: /etc/univention
- name: proxy-config-templates-volume
mountPath: /config/templates
- name: proxy-scripts-volume
mountPath: /entrypoint.d/90-generate-slapd-conf.sh
subPath: generate-slapd.conf.sh
- name: plugin-targets
mountPath: /var/lib/univention-ldap-local/local-schema
subPath: ldap-schema
readOnly: true
- name: plugin-targets
mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d
subPath: ldap-acls
readOnly: false
- name: var-run-volume
mountPath: /var/run/slapd
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: "data-volume"
mountPath: /var/lib/univention-ldap
volumes:
- name: "data-volume"
emptyDir: {}
- name: "var-run-volume"
emptyDir: {}
- name: "usr-share-univention-ldap-volume"
emptyDir: {}
- name: "usr-share-saml-volume"
emptyDir: {}
- name: "etc-ldap-volume"
emptyDir: {}
- name: "etc-univention-volume"
emptyDir: {}
- name: "proxy-scripts-volume"
configMap:
name: ums-ldap-server-proxy-scripts
defaultMode: 0555
- name: "proxy-config-templates-volume"
configMap:
name: ums-ldap-server-proxy-config-templates
- name: "scripts-volume"
configMap:
name: ums-ldap-server-scripts
defaultMode: 0555
- name: "plugin-targets"
emptyDir: {}
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: "ums-portal-frontend"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-frontend
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: portal-frontend
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
checksum/configmap: 2eb70c692dd148ad4e9ac43015d8d73fedd90bd2e2ab969763a8b7ef006922e9
checksum/branding-configmap: 9a39db2d72c22b79d74e75c7aa560fe75270915d8df5a5d6e2476390c5010257
labels:
app.kubernetes.io/name: portal-frontend
helm.sh/chart: nubusPortalFrontend-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-portal-frontend
terminationGracePeriodSeconds: 5
containers:
- name: "portal-frontend"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update:1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b"
imagePullPolicy: "IfNotPresent"
env:
envFrom:
- configMapRef:
name: "ums-portal-frontend"
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 5
ports:
- name: http
containerPort: 80
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: var-run-volume
mountPath: /var/run
- name: var-lib-nginx-volume
mountPath: /var/lib/nginx
- name: "ums-portal-frontend-nginx"
subPath: nginx.conf
mountPath: /etc/nginx/nginx.conf
- name: "ums-portal-frontend-branding"
mountPath: "/var/www/html/favicon.ico"
subPath: "favicon.ico"
- name: "ums-portal-frontend-branding"
mountPath: "/var/www/html/css/custom.css"
subPath: "custom.css"
- name: "ums-portal-frontend-branding"
mountPath: "/var/www/html/icons/logo.svg"
subPath: "logo.svg"
- name: "ums-portal-frontend-branding"
mountPath: "/var/www/html/custom/portal_background_image.svg"
subPath: "portal_background_image.svg"
volumes:
- name: "var-run-volume"
emptyDir: {}
- name: "var-lib-nginx-volume"
emptyDir: {}
- name: "ums-portal-frontend-nginx"
configMap:
name: "ums-portal-frontend-nginx"
defaultMode: 420
- name: "ums-portal-frontend-branding"
configMap:
name: "ums-portal-frontend-branding"
---
# Source: nubus/charts/nubusPortalServer/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: "ums-portal-server"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: portal-server
helm.sh/chart: nubusPortalServer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
intents.otterize.com/service-name: ums-portal-server
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: portal-server
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
checksum/configmap: e3d49ae79f8cbd656683f2d1a0b3a27df49829d89c6f68774e5239eb56ec1f78
labels:
app.kubernetes.io/name: portal-server
helm.sh/chart: nubusPortalServer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-portal-server
terminationGracePeriodSeconds: 5
initContainers:
- name: "copy-files"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27"
imagePullPolicy: "IfNotPresent"
command:
- /bin/bash
- -c
- |
set -euxo pipefail
cp -a /usr/share/univention-portal/* /target/usr/share/univention-portal/
volumeMounts:
- name: usr-share-univention-portal-volume
mountPath: /target/usr/share/univention-portal
- name: tmp-volume
mountPath: /tmp
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "portal-server"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27"
imagePullPolicy: "IfNotPresent"
env:
- name: OBJECT_STORAGE_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: "ums-portal-server-minio-credentials"
key: "accessKey"
- name: OBJECT_STORAGE_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: "ums-portal-server-minio-credentials"
key: "secretKey"
envFrom:
- configMapRef:
name: "ums-portal-server"
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 5
ports:
- name: http
containerPort: 80
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: usr-lib-univention-portal-config-volume
mountPath: /usr/lib/univention-portal/config
- name: usr-share-univention-portal-volume
mountPath: /usr/share/univention-portal
- name: authenticator-secret
mountPath: "/var/secrets/authenticator.secret"
subPath: "password"
- name: tmp-volume
mountPath: /tmp
- name: secret-udm
mountPath: /var/secrets/udm_api_password
subPath: "password"
volumes:
- name: usr-lib-univention-portal-config-volume
emptyDir: {}
- name: usr-share-univention-portal-volume
emptyDir: {}
- name: authenticator-secret
secret:
secretName: "ums-opendesk-portal-server-central-navigation"
- name: secret-udm
secret:
secretName: "ums-stack-data-ums-svc-portal-server"
- name: tmp-volume
emptyDir: {}
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-provisioning-dispatcher
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-dispatcher
helm.sh/chart: nubusProvisioning-0.49.3
annotations:
intents.otterize.com/service-name: ums-provisioning-dispatcher
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-provisioning-dispatcher
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-dispatcher
helm.sh/chart: nubusProvisioning-0.49.3
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-provisioning
terminationGracePeriodSeconds: 5
initContainers:
- name: wait-for-nats
command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-api
env:
- name: NATS_USER
value: "dispatcher"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-dispatcher-credentials
key: NATS_PASSWORD
volumeMounts:
- name: wait-for-nats
mountPath: /scripts
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
containers:
- name: "dispatcher"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher:0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-dispatcher
env:
- name: NATS_USER
value: "dispatcher"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-dispatcher-credentials
key: NATS_PASSWORD
livenessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
startupProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
volumes:
- name: wait-for-nats
configMap:
name: ums-provisioning-api
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-events-and-consumer-api.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-provisioning-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-api
helm.sh/chart: nubusProvisioning-0.49.3
annotations:
intents.otterize.com/service-name: ums-provisioning-api
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-provisioning-api
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-api
helm.sh/chart: nubusProvisioning-0.49.3
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-provisioning
terminationGracePeriodSeconds: 5
initContainers:
- name: wait-for-nats
command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-api
env:
- name: NATS_USER
value: "api"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: NATS_PASSWORD
volumeMounts:
- name: wait-for-nats
mountPath: /scripts
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
containers:
- name: "api"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-api
env:
- name: ADMIN_USERNAME
value: "admin"
- name: ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: ADMIN_PASSWORD
- name: EVENTS_USERNAME_UDM
value: "udm"
- name: EVENTS_PASSWORD_UDM
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: EVENTS_PASSWORD_UDM
- name: PREFILL_USERNAME
value: "prefill"
- name: PREFILL_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: PREFILL_PASSWORD
- name: ADMIN_NATS_USER
value: "placeholder"
- name: ADMIN_NATS_PASSWORD
value: "placeholder"
- name: NATS_USER
value: "api"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: NATS_PASSWORD
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 7777
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 7777
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 7777
ports:
- name: http
containerPort: 7777
protocol: TCP
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
volumes:
- name: wait-for-nats
configMap:
name: ums-provisioning-api
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-prefill.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-provisioning-prefill
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-prefill
helm.sh/chart: nubusProvisioning-0.49.3
annotations:
intents.otterize.com/service-name: ums-provisioning-prefill
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-provisioning-prefill
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-prefill
helm.sh/chart: nubusProvisioning-0.49.3
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-provisioning
terminationGracePeriodSeconds: 5
initContainers:
- name: wait-for-udm
command: [ "/usr/bin/python3", "/scripts/wait-for-udm.py" ]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-prefill
env:
- name: UDM_USERNAME
value: "cn=admin"
- name: UDM_PASSWORD
valueFrom:
secretKeyRef:
name: ums-ldap-server-credentials
key: adminPassword
volumeMounts:
- name: wait-for-udm
mountPath: /scripts
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
- name: wait-for-api-to-start
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
command: [ "bash", "-c", "set -euo pipefail; until curl -s http://${PROVISIONING_API_HOST}:${PROVISIONING_API_PORT}/v1/subscriptions > /dev/null || [ $? -ne 0 ]; do echo Waiting for api; sleep 2; done;" ]
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
containers:
- name: "prefill"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-prefill
env:
- name: NATS_USER
value: "prefill"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-prefill-credentials
key: NATS_PASSWORD
- name: UDM_USERNAME
value: "cn=admin"
- name: UDM_PASSWORD
valueFrom:
secretKeyRef:
name: ums-ldap-server-credentials
key: adminPassword
- name: PREFILL_USERNAME
value: "prefill"
- name: PREFILL_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: PREFILL_PASSWORD
livenessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
startupProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
volumes:
- name: wait-for-udm
configMap:
name: ums-provisioning-prefill
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-udm-transformer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-provisioning-udm-transformer
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-udm-transformer
helm.sh/chart: nubusProvisioning-0.49.3
annotations:
intents.otterize.com/service-name: ums-provisioning-udm-transformer
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-provisioning-udm-transformer
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-udm-transformer
helm.sh/chart: nubusProvisioning-0.49.3
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-provisioning
terminationGracePeriodSeconds: 5
initContainers:
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -av /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules
cp -av /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d
cp -av /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d
cp -av /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
- name: wait-for-nats
command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-api
env:
- name: NATS_USER
value: "udmtransformer"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-transformer-credentials
key: NATS_PASSWORD
volumeMounts:
- name: wait-for-nats
mountPath: /scripts
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
containers:
- name: "udm-transformer"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-common
- configMapRef:
name: ums-provisioning-udm-transformer
env:
- name: NATS_USER
value: "udmtransformer"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-transformer-credentials
key: NATS_PASSWORD
- name: EVENTS_USERNAME_UDM
value: "udm"
- name: EVENTS_PASSWORD_UDM
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: EVENTS_PASSWORD_UDM
- name: LDAP_BIND_PW
valueFrom:
secretKeyRef:
name: ums-ldap-server-credentials
key: adminPassword
livenessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
startupProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
volumeMounts:
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/udm/modules
subPath: udm-modules
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d
subPath: udm-hooks.d
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d
subPath: udm-syntax.d
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers
subPath: udm-handlers
readOnly: true
volumes:
- name: wait-for-nats
configMap:
name: ums-provisioning-api
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
- name: "plugin-targets"
emptyDir: {}
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-selfservice-listener
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-selfservice-listener
app.kubernetes.io/version: 0.0.1
helm.sh/chart: nubusSelfServiceConsumer-0.14.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-selfservice-listener
template:
metadata:
annotations:
checksum/configmap: 76c62f016e9d1e4eb0e5913d0c2a0d45837946dfe402a0fc8ec60c1bf55d8fca
intents.otterize.com/service-name: ums-selfservice-listener
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-selfservice-listener
spec:
serviceAccountName: ums-selfservice-listener
terminationGracePeriodSeconds: 5
initContainers:
- name: wait-for-provisioning-api
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
command: ["/bin/bash", "/scripts/wait-for-provisioning-api.sh"]
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: scripts
mountPath: /scripts
env:
- name: PROVISIONING_API_USERNAME
value: selfservice
- name: PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: ums-selfservice-listener-credentials
key: PROVISIONING_API_PASSWORD
envFrom:
- configMapRef:
name: ums-selfservice-listener-common
containers:
- name: "selfservice-listener"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation:0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0"
imagePullPolicy: "IfNotPresent"
command:
- /bin/bash
- -c
- |
set -euxo pipefail
poetry run python3 -m invitation
env:
- name: PROVISIONING_API_USERNAME
value: selfservice
- name: PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: ums-selfservice-listener-credentials
key: PROVISIONING_API_PASSWORD
envFrom:
- configMapRef:
name: ums-selfservice-listener-common
livenessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
startupProbe:
null
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
volumes:
- name: "scripts"
configMap:
defaultMode: 0555
name: ums-selfservice-listener-scripts
---
# Source: nubus/charts/nubusUdmRestApi/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-udm-rest-api
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
annotations:
intents.otterize.com/service-name: ums-udm-rest-api
spec:
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: udm-rest-api
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
checksum/configmap: f2c2f0ab9162c70b01a035d98fd89ac341f94aec50f7309f846db2267b3f8e5e
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
serviceAccountName: ums-udm-rest-api
terminationGracePeriodSeconds: 5
initContainers:
- name: "univention-compatibility"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- 'cp -a /etc/univention/* /target/etc/univention/; cp -a /usr/lib/python3/* /target/usr/lib/python3/;'
volumeMounts:
- name: etc-univention-volume
mountPath: /target/etc/univention
- name: usr-lib-python3-volume
mountPath: /target/usr/lib/python3
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "ucr-commit"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- 'ucr commit /etc/univention/directory/reports/config.ini'
volumeMounts:
- name: etc-univention-volume
mountPath: /etc/univention
- name: var-cache-univention-config-volume
mountPath: /var/cache/univention-config
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -av /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules
cp -av /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d
cp -av /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d
cp -av /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers
cp -av /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons /target/umc-icons
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "udm-rest-api"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command:
- sh
- -c
- |
python3 \
-m "univention.admin.rest.server" \
--debug "2" \
--port "9979" \
--interface "0.0.0.0" \
--processes "1"
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-udm-rest-api
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 9979
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 9979
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 9979
timeoutSeconds: 5
ports:
- name: http
containerPort: 9979
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: usr-lib-python3-volume
mountPath: /usr/lib/python3
- name: var-log-univention-volume
mountPath: /var/log/univention
- name: tmp-volume
mountPath: /tmp
- name: var-run-volume
mountPath: /var/run
- name: etc-ldap-volume
mountPath: /etc/ldap
- name: etc-univention-volume
mountPath: /etc/univention
- name: credentials-volume
mountPath: /etc/ldap.secret
subPath: adminPassword
- name: credentials-volume
mountPath: /etc/machine.secret
subPath: adminPassword
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/udm/modules
subPath: udm-modules
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d
subPath: udm-hooks.d
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d
subPath: udm-syntax.d
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers
subPath: udm-handlers
readOnly: true
- name: plugin-targets
mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/
subPath: umc-icons
readOnly: true
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
volumes:
- name: "usr-lib-python3-volume"
emptyDir: {}
- name: "etc-ldap-volume"
configMap:
name: "ums-udm-rest-api-ldap-conf"
- name: "var-cache-univention-config-volume"
emptyDir: {}
- name: "tmp-volume"
emptyDir: {}
- name: "var-run-volume"
emptyDir: {}
- name: "var-log-univention-volume"
emptyDir: {}
- name: "etc-univention-volume"
emptyDir: {}
- name: plugin-targets
emptyDir: {}
- name: credentials-volume
secret:
defaultMode: 420
secretName: ums-ldap-server-credentials
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
---
# Source: nubus/charts/nubusUmcGateway/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-umc-gateway
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-gateway
helm.sh/chart: nubusUmcGateway-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
spec:
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: umc-gateway
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: umc-gateway
helm.sh/chart: nubusUmcGateway-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
serviceAccountName: ums-umc-gateway
terminationGracePeriodSeconds: 5
initContainers:
- name: "copy-config"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1"
imagePullPolicy: "IfNotPresent"
command:
- bash
- -c
- |
cp -a /etc/univention/* /target/etc/univention/
cp -a /etc/apache2/* /target/etc/apache2/
cp -a /var/www/univention/* /target/var/www/univention/
volumeMounts:
- name: "etc-apache2"
mountPath: "/target/etc/apache2"
- name: "var-www-univention"
mountPath: "/target/var/www/univention"
- name: "etc-univention"
mountPath: "/target/etc/univention"
- name: "prepare-config"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1"
imagePullPolicy: "IfNotPresent"
command:
- bash
- -c
- |
/entrypoint.d/50-entrypoint.sh
echo "Listen 8080" > /etc/apache2/ports.conf
sed -e 's,,,g' -i /etc/apache2/sites-available/000-default.conf
cat /etc/apache2/sites-available/000-default.conf
volumeMounts:
- name: "etc-apache2"
mountPath: "/etc/apache2"
- name: "var-www-univention"
mountPath: "/var/www/univention"
- name: "etc-univention"
mountPath: "/etc/univention"
- name: "config-cache"
mountPath: "/var/cache/univention-config"
- name: "univention-logs"
mountPath: "/var/log/univention"
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -av /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons /target/umc-icons
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "umc-gateway"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1"
imagePullPolicy: IfNotPresent
command:
- bash
- -c
- |
apache2 -D FOREGROUND \
-d /etc/apache2/ \
-f /etc/apache2/apache2.conf
volumeMounts:
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: plugin-targets
mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/
subPath: umc-icons
readOnly: true
- name: "apache2-logs"
mountPath: "/usr/local/apache2/logs"
- name: "etc-apache2"
mountPath: "/etc/apache2"
readOnly: true
- name: "var-www-univention"
mountPath: "/var/www/univention"
readOnly: true
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 10
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 3
successThreshold: 1
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 10
timeoutSeconds: 3
periodSeconds: 15
failureThreshold: 30
successThreshold: 1
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
- name: plugin-targets
emptyDir: { }
- name: "apache2-logs"
emptyDir:
medium: "Memory"
- name: "etc-apache2"
emptyDir:
medium: "Memory"
- name: "var-www-univention"
emptyDir:
medium: "Memory"
- name: "etc-univention"
emptyDir:
medium: "Memory"
- name: "config-cache"
emptyDir:
medium: "Memory"
- name: "univention-logs"
emptyDir:
medium: "Memory"
---
# Source: nubus/charts/nubusUmcServer/templates/deployment-load-balancer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ums-umc-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-umc-server-proxy
app.kubernetes.io/version: 12.0.29
helm.sh/chart: nubusUmcServer-0.38.0
annotations:
intents.otterize.com/service-name: ums-umc-server
spec:
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: ums-umc-server-proxy
template:
metadata:
annotations:
checksum/configmap: 105906601f7b3c03503c2935a66844ca61874732012d626f0f87349e2946610c
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-umc-server-proxy
app.kubernetes.io/version: 12.0.29
helm.sh/chart: nubusUmcServer-0.38.0
spec:
securityContext:
fsGroup: 0
fsGroupChangePolicy: Always
serviceAccountName: ums-umc-server
terminationGracePeriodSeconds: 5
containers:
- name: "proxy"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/traefik:3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e"
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /var/secrets/ssl
name: certificates
- name: traefik
mountPath: /etc/traefik
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: certificates
secret:
secretName: 'ums-saml-tls'
- name: traefik
configMap:
name: "ums-umc-server-proxy"
items:
- key: traefik.yaml
path: traefik.yaml
- key: dynamic.yaml
path: dynamic.yaml
...
---
# Source: nubus/charts/keycloak/templates/statefulset.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: ums-keycloak
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: keycloak
helm.sh/chart: keycloak-0.9.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: keycloak
app.kubernetes.io/instance: ums
serviceName: ums-keycloak
podManagementPolicy: OrderedReady
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 163999489175340c6ed413f27e5392c0fd7c03eabfe6bb60239616028bacf024
intents.otterize.com/service-name: ums-keycloak
labels:
app.kubernetes.io/name: keycloak
helm.sh/chart: keycloak-0.9.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
serviceAccountName: ums-keycloak
terminationGracePeriodSeconds: 5
containers:
- name: "keycloak"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "artifacts.software-univention.de/nubus/keycloak:25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65"
imagePullPolicy: IfNotPresent
args:
- "start"
- "--features=admin-fine-grained-authz,token-exchange"
- "--metrics-enabled=true"
# Find the available variables here: https://github.com/univention/univention-keycloak-app/blob/main/app/settings
envFrom:
- configMapRef:
name: "ums-keycloak"
env:
- name: "KEYCLOAK_ADMIN"
value: kcadmin
- name: "KEYCLOAK_ADMIN_PASSWORD"
valueFrom:
secretKeyRef:
name: ums-opendesk-keycloak-credentials
key: admin_password
- name: "KC_DB_USERNAME"
value: keycloak_user
- name: "KC_DB_PASSWORD"
valueFrom:
secretKeyRef:
name: ums-keycloak-postgresql-opendesk-credentials
key: keycloakDatabasePassword
- name: "UNIVENTION_META_JSON"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/meta.json"
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: https
containerPort: 8443
protocol: TCP
- name: ispn
containerPort: 7800
protocol: TCP
livenessProbe:
httpGet:
path: "/realms/master"
port: 8080
initialDelaySeconds: 1
periodSeconds: 5
timeoutSeconds: 2
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: "/realms/master"
port: 8080
initialDelaySeconds: 1
periodSeconds: 1
timeoutSeconds: 2
failureThreshold: 5
successThreshold: 1
startupProbe:
httpGet:
path: "/realms/master"
port: 8080
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
---
# Source: nubus/charts/nubusLdapNotifier/templates/statefulset.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ums-ldap-notifier
labels:
app.kubernetes.io/name: ldap-notifier
helm.sh/chart: nubusLdapNotifier-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "14.0.4"
spec:
serviceName: ums-ldap-notifier
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: ldap-notifier
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
checksum/config: 52bd8a8b5b432276dacda90c63fc8127f9a066abdbb1f9b6040d9276875fa950
intents.otterize.com/service-name: ums-ldap-notifier
labels:
app.kubernetes.io/name: ldap-notifier
app.kubernetes.io/instance: ums
spec:
securityContext:
fsGroup: 102
fsGroupChangePolicy: Always
serviceAccountName: ums-ldap-notifier
containers:
- name: "ldap-notifier"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier:0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7"
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: ums-ldap-notifier
volumeMounts:
- name: shared-data
mountPath: /var/lib/univention-ldap
- name: shared-run
mountPath: /var/run/slapd
- name: "run"
mountPath: "/run"
ports:
- name: notifier
containerPort: 6669
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 6669
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 6669
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 6669
timeoutSeconds: 5
volumes:
- name: "run"
emptyDir:
medium: "Memory"
- name: "shared-data"
persistentVolumeClaim:
claimName: shared-data-ums-ldap-server-primary-0
- name: "shared-run"
persistentVolumeClaim:
claimName: shared-run-ums-ldap-server-primary-0
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: ldap-server-type
operator: In
values:
- primary
- key: apps.kubernetes.io/pod-index
operator: In
values:
- "0"
topologyKey: kubernetes.io/hostname
---
# Source: nubus/charts/nubusLdapServer/templates/statefulset-primary.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: ums-ldap-server-primary
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
ldap-server-type: primary
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
serviceName: ums-ldap-server-primary
replicas: 2
podManagementPolicy: OrderedReady
volumeClaimTemplates:
- metadata:
name: "shared-data"
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: "1Gi"
- metadata:
name: "shared-run"
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: "1Gi"
selector:
matchLabels:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: primary
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9
checksum/configmap-primary: 25661acec827deb67d9904c34a9360d8cb8a67714f31e9479266e09723ed213d
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
ldap-server-type: primary
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: ldap-server-type
operator: In
values:
- primary
topologyKey: kubernetes.io/hostname
weight: 100
securityContext:
fsGroup: 102
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-ldap-server
terminationGracePeriodSeconds: 20
initContainers:
- name: "univention-compatibility"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/
cp -a /etc/ldap/* /target/etc/ldap/
cp -a /etc/univention/* /target/etc/univention/
volumeMounts:
- name: usr-share-univention-ldap-volume
mountPath: /target/usr/share/univention-ldap
- name: etc-ldap-volume
mountPath: /target/etc/ldap
- name: etc-univention-volume
mountPath: /target/etc/univention
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
mkdir -p /target/ldap-schema
mkdir -p /target/ldap-acls
cp -av /var/lib/univention-ldap-local/local-schema/* /target/ldap-schema
cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d/* /target/ldap-acls
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "wait-for-saml-metadata"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
command:
- "/bin/bash"
- "/scripts/wait-for-saml-metadata.sh"
envFrom:
- configMapRef:
name: ums-ldap-server
volumeMounts:
- name: scripts-volume
mountPath: /scripts
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "openldap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-ldap-server
- configMapRef:
name: ums-ldap-server-primary
env:
- name: SYNC_PASSWORD
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
- name: LDAP_CN_ADMIN_PW
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
- name: STATUS_CONFIGMAP
value: ums-ldap-server-status
- name: STATUS_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
readinessProbe:
exec:
command:
- /bin/sh
- -c
- ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL "(&(objectClass=mdb))"
dn
failureThreshold: 1
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
ports:
- name: ldap
containerPort: 389
protocol: TCP
- name: ldaps
containerPort: 636
protocol: TCP
volumeMounts:
- name: slapd-overlay-unix-socket-volume
mountPath: /var/lib/univention-ldap/slapd-sock
- name: usr-share-univention-ldap-volume
mountPath: /usr/share/univention-ldap
- name: usr-share-saml-volume
mountPath: /usr/share/saml
- name: etc-ldap-volume
mountPath: /etc/ldap
- name: etc-univention-volume
mountPath: /etc/univention
- name: primary-config-templates-volume
mountPath: /config/templates
- name: primary-scripts-volume
mountPath: /entrypoint.d/90-append-slapd-conf.sh
subPath: append-slapd.conf.sh
- name: scripts-volume
mountPath: /entrypoint.d/91-init-internal-database.sh
subPath: init-internal-database.sh
- name: scripts-volume
mountPath: /scripts
- name: plugin-targets
mountPath: /var/lib/univention-ldap-local/local-schema
subPath: ldap-schema
readOnly: true
- name: plugin-targets
mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d
subPath: ldap-acls
readOnly: false
- name: shared-run
mountPath: /var/run/slapd
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: "shared-data"
mountPath: /var/lib/univention-ldap
- name: leader-elector
image: registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector:0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: LEASE_NAME
value: "ldap-primary-leader"
- name: LEASE_DURATION_SECONDS
value: "15"
- name: RETRY_PERIOD_SECONDS
value: "5"
- name: RENEW_DEADLINE_SECONDS
value: "10"
volumeMounts:
- name: "shared-data"
mountPath: /var/lib/univention-ldap
volumes:
- name: "slapd-overlay-unix-socket-volume"
emptyDir: {}
- name: "usr-share-univention-ldap-volume"
emptyDir: {}
- name: "usr-share-saml-volume"
emptyDir: {}
- name: "etc-ldap-volume"
emptyDir: {}
- name: "etc-univention-volume"
emptyDir: {}
- name: "primary-scripts-volume"
configMap:
name: ums-ldap-server-primary-scripts
defaultMode: 0555
- name: "primary-config-templates-volume"
configMap:
name: ums-ldap-server-primary-config-templates
- name: "scripts-volume"
configMap:
name: ums-ldap-server-scripts
defaultMode: 0555
- name: "plugin-targets"
emptyDir: {}
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
...
---
# Source: nubus/charts/nubusLdapServer/templates/statefulset-secondary.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: ums-ldap-server-secondary
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
ldap-server-type: secondary
annotations:
intents.otterize.com/service-name: ums-ldap-server
spec:
serviceName: ums-ldap-server-secondary
replicas: 2
podManagementPolicy: OrderedReady
volumeClaimTemplates:
- metadata:
name: "shared-data"
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: "1Gi"
- metadata:
name: "shared-run"
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: "1Gi"
selector:
matchLabels:
app.kubernetes.io/name: ldap-server
app.kubernetes.io/instance: ums
ldap-server-type: secondary
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9
checksum/configmap-secondary: 978da6d233bffad3a3b6f1e42204300a3cc8957ad9eeafee9673f438506802a6
labels:
app.kubernetes.io/name: ldap-server
helm.sh/chart: nubusLdapServer-0.34.1
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
ldap-server-type: secondary
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: ldap-server-type
operator: In
values:
- secondary
topologyKey: kubernetes.io/hostname
weight: 100
securityContext:
fsGroup: 102
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-ldap-server
terminationGracePeriodSeconds: 20
initContainers:
- name: "univention-compatibility"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- 'cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/'
volumeMounts:
- name: usr-share-univention-ldap-volume
mountPath: /target/usr/share/univention-ldap
- name: etc-ldap-volume
mountPath: /target/etc/ldap
- name: etc-univention-volume
mountPath: /target/etc/univention
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema
cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "wait-for-saml-metadata"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
command:
- "/bin/bash"
- "/scripts/wait-for-saml-metadata.sh"
envFrom:
- configMapRef:
name: ums-ldap-server
volumeMounts:
- name: scripts-volume
mountPath: /scripts
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "wait-for-primary"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-ldap-server
- configMapRef:
name: ums-ldap-server-secondary
env:
- name: SYNC_PASSWORD
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
- name: LDAP_CN_ADMIN_PW
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
command:
- bash
- -c
- '/scripts-secondary/wait-for-primary.sh'
volumeMounts:
- name: secondary-scripts-volume
mountPath: /scripts-secondary
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "openldap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 102
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-ldap-server
- configMapRef:
name: ums-ldap-server-secondary
env:
- name: SYNC_PASSWORD
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
- name: LDAP_CN_ADMIN_PW
valueFrom:
secretKeyRef:
name: "ums-ldap-server-credentials"
key: "adminPassword"
livenessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
startupProbe:
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 389
timeoutSeconds: 5
ports:
- name: ldap
containerPort: 389
protocol: TCP
- name: ldaps
containerPort: 636
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: usr-share-univention-ldap-volume
mountPath: /usr/share/univention-ldap
- name: usr-share-saml-volume
mountPath: /usr/share/saml
- name: etc-ldap-volume
mountPath: /etc/ldap
- name: etc-univention-volume
mountPath: /etc/univention
- name: secondary-config-templates-volume
mountPath: /config/templates
- name: secondary-scripts-volume
mountPath: /entrypoint.d/90-append-slapd-conf.sh
subPath: append-slapd.conf.sh
- name: scripts-volume
mountPath: /entrypoint.d/91-init-internal-database.sh
subPath: init-internal-database.sh
- name: plugin-targets
mountPath: /var/lib/univention-ldap-local/local-schema
subPath: ldap-schema
readOnly: true
- name: plugin-targets
mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d
subPath: ldap-acls
readOnly: false
- name: shared-run
mountPath: /var/run/slapd
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: "shared-data"
mountPath: /var/lib/univention-ldap
volumes:
- name: "usr-share-univention-ldap-volume"
emptyDir: {}
- name: "usr-share-saml-volume"
emptyDir: {}
- name: "etc-ldap-volume"
emptyDir: {}
- name: "etc-univention-volume"
emptyDir: {}
- name: "secondary-scripts-volume"
configMap:
name: ums-ldap-server-secondary-scripts
defaultMode: 0555
- name: "secondary-config-templates-volume"
configMap:
name: ums-ldap-server-secondary-config-templates
- name: "scripts-volume"
configMap:
name: ums-ldap-server-scripts
defaultMode: 0555
- name: "plugin-targets"
emptyDir: {}
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
...
---
# Source: nubus/charts/nubusPortalConsumer/templates/statefulset.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ums-portal-consumer
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: portal-consumer
app.kubernetes.io/version: 1.16.0
helm.sh/chart: nubusPortalConsumer-0.63.0
spec:
serviceName: ums-portal-consumer
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: ums
app.kubernetes.io/name: portal-consumer
template:
metadata:
annotations:
checksum/config: 35dd904a00f3d581133c5f9b63984b8a553a94ae6375552c97c6e8a26f9fb957
checksum/secret: 468f8dbd741a43c130cac709b318f6b5002bdba3a514d8fa79c89fe60729c45c
intents.otterize.com/service-name: ums-portal-consumer
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: portal-consumer
app.kubernetes.io/version: 1.16.0
helm.sh/chart: nubusPortalConsumer-0.63.0
spec:
securityContext:
fsGroup: 1001
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
terminationGracePeriodSeconds: 5
initContainers:
- name: wait-for-ldap
securityContext:
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command: ["/bin/bash", "/scripts/wait-for-ldap.sh"]
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
env:
envFrom:
- configMapRef:
name: ums-portal-consumer-common
volumeMounts:
- name: scripts
mountPath: /scripts
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/var/secrets/machine_secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/etc/machine.secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/cert_pem"
subPath: "tls.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/private_key"
subPath: "tls.key"
readOnly: true
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: wait-for-udm
securityContext:
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command: ["/bin/bash", "/scripts/wait-for-udm.sh"]
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
env:
envFrom:
- configMapRef:
name: ums-portal-consumer-common
volumeMounts:
- name: scripts
mountPath: /scripts
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/var/secrets/machine_secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/etc/machine.secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/cert_pem"
subPath: "tls.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/private_key"
subPath: "tls.key"
readOnly: true
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: wait-for-object-storage
securityContext:
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command: ["/usr/bin/python3", "/scripts/wait-for-object-store.py"]
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-portal-consumer-common
env:
- name: OBJECT_STORAGE_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-minio-credentials"
key: "accessKey"
- name: OBJECT_STORAGE_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-minio-credentials"
key: "secretKey"
volumeMounts:
- name: scripts
mountPath: /scripts
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: wait-for-provisioning-api
securityContext:
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
command: ["/bin/bash", "/scripts/wait-for-provisioning-api.sh"]
volumeMounts:
- name: scripts
mountPath: /scripts
env:
- name: PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-credentials"
key: "PROVISIONING_API_PASSWORD"
envFrom:
- configMapRef:
name: ums-portal-consumer-common
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "univention-compatibility"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-portal-consumer-common
env:
- name: REQUESTS_CA_BUNDLE
value: "/etc/ssl/certs/ca-certificates.crt"
- name: OBJECT_STORAGE_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-minio-credentials"
key: "accessKey"
- name: OBJECT_STORAGE_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-minio-credentials"
key: "secretKey"
- name: PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-credentials"
key: "PROVISIONING_API_PASSWORD"
command:
- sh
- -c
- './50-ldap-setup.envsh; cp -a /etc/univention/* /target/etc/univention/'
volumeMounts:
- name: etc-univention-volume
mountPath: /target/etc/univention
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/var/secrets/machine_secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/etc/machine.secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/cert_pem"
subPath: "tls.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/private_key"
subPath: "tls.key"
readOnly: true
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "portal-consumer"
securityContext:
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-portal-consumer-common
env:
- name: REQUESTS_CA_BUNDLE
value: "/etc/ssl/certs/ca-certificates.crt"
- name: OBJECT_STORAGE_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-minio-credentials"
key: "accessKey"
- name: OBJECT_STORAGE_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-minio-credentials"
key: "secretKey"
- name: PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: "ums-portal-consumer-credentials"
key: "PROVISIONING_API_PASSWORD"
volumeMounts:
- name: usr-lib-univention-portal-config-volume
mountPath: /usr/lib/univention-portal/config
- name: etc-univention-volume
mountPath: /etc/univention
readOnly: true
- name: group-membership-cache
mountPath: /usr/share/univention-group-membership-cache/caches
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/var/secrets/machine_secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-credentials-volume"
mountPath: "/etc/machine.secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/cert_pem"
subPath: "tls.crt"
readOnly: true
- name: "ums-portal-consumer-ldap-tls-volume"
mountPath: "/var/secrets/private_key"
subPath: "tls.key"
readOnly: true
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: "usr-lib-univention-portal-config-volume"
emptyDir: {}
- name: "etc-univention-volume"
emptyDir: {}
- name: "scripts"
configMap:
defaultMode: 0555
name: ums-portal-consumer-scripts
- name: "ums-portal-consumer-ldap-credentials-volume"
secret:
secretName: "ums-portal-consumer-ldap-credentials"
- name: "ums-portal-consumer-ldap-tls-volume"
secret:
secretName: "ums-portal-consumer-ldap-tls"
volumeClaimTemplates:
- metadata:
name: group-membership-cache
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: "1Gi"
---
# Source: nubus/charts/nubusProvisioning/charts/nats/templates/statefulset.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: ums-provisioning-nats
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: provisioning-nats
helm.sh/chart: nats-0.3.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: ums-provisioning-nats
spec:
serviceName: "ums-provisioning-nats-headless"
replicas: 1
podManagementPolicy: Parallel
volumeClaimTemplates:
- metadata:
name: "nats-data"
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: "1Gi"
selector:
matchLabels:
app.kubernetes.io/name: provisioning-nats
app.kubernetes.io/instance: ums
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 53c56366abd73187e41e32f3abeeb69c21aec733331b4650fb5b91096ab2a284
labels:
app.kubernetes.io/name: provisioning-nats
helm.sh/chart: nats-0.3.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- nats
topologyKey: kubernetes.io/hostname
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-provisioning-nats
containers:
- name: "nats"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/nats:2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7"
imagePullPolicy: "IfNotPresent"
env:
- name: SERVER_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CLUSTER_ADVERTISE
value: $(SERVER_NAME).nats.$(NAMESPACE).svc.cluster.local
- name: CLUSTER_NAME
value: "ums-provisioning-nats"
- name: NATS_UDM_LISTENER_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-listener-credentials
key: NATS_PASSWORD
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-nats-credentials
key: admin_password
- name: NATS_PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: NATS_PASSWORD
- name: NATS_DISPATCHER_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-dispatcher-credentials
key: NATS_PASSWORD
- name: NATS_UDM_TRANSFORMER_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-transformer-credentials
key: NATS_PASSWORD
- name: NATS_PREFILL_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-prefill-credentials
key: NATS_PASSWORD
args:
- --config
- /etc/nats-config/nats.conf
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz?js-enabled-only=true
port: monitor
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz?js-enabled-only=true
port: monitor
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
startupProbe:
failureThreshold: 90
httpGet:
path: /healthz?js-enabled-only=true
port: monitor
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- name: client
containerPort: 4222
protocol: TCP
- name: cluster
containerPort: 6222
protocol: TCP
- name: monitor
containerPort: 8222
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 128Mi
lifecycle:
preStop:
exec:
command:
- nats-server
- -sl=ldm=/var/run/nats.pid
volumeMounts:
- name: var-run-volume
mountPath: /var/run
- name: config-volume
mountPath: /etc/nats-config
- name: nats-data
mountPath: "/data"
- name: "reloader"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/natsio/nats-server-config-reloader:0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99"
imagePullPolicy: "IfNotPresent"
env:
- name: SERVER_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
args:
- -pid
- /var/run/nats.pid
- -config
- /etc/nats-config/nats.conf
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
volumeMounts:
- name: config-volume
mountPath: /etc/nats-config
- name: var-run-volume
mountPath: /var/run
- name: "nats-box"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/natsio/nats-box:0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51"
imagePullPolicy: "IfNotPresent"
workingDir: /home/nats
env:
- name: SERVER_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NATS_UDM_LISTENER_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-listener-credentials
key: NATS_PASSWORD
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-nats-credentials
key: admin_password
- name: NATS_PROVISIONING_API_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: NATS_PASSWORD
- name: NATS_DISPATCHER_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-dispatcher-credentials
key: NATS_PASSWORD
- name: NATS_UDM_TRANSFORMER_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-transformer-credentials
key: NATS_PASSWORD
- name: NATS_PREFILL_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-prefill-credentials
key: NATS_PASSWORD
- name: NATS_URL
value: "nats://$(SERVER_NAME).ums-provisioning-nats-headless.$(NAMESPACE).svc.cluster.local:4222"
args:
- sh
- -c
- 'trap true INT TERM; sleep infinity & wait'
resources:
limits:
cpu: 288
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
volumeMounts:
volumes:
- name: "var-run-volume"
emptyDir: {}
- name: "config-volume"
configMap:
name: ums-provisioning-nats-config
defaultMode: 420
...
---
# Source: nubus/charts/nubusUdmListener/templates/statefulset.yaml
apiVersion: "apps/v1"
kind: "StatefulSet"
metadata:
name: 'ums-provisioning-udm-listener'
labels:
app.kubernetes.io/name: provisioning-udm-listener
helm.sh/chart: nubusUdmListener-0.49.3
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
spec:
serviceName: ums-provisioning-udm-listener
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: provisioning-udm-listener
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
checksum/config: 'd010754eed8f47b373e2dd6e1a8110e2dbdd6e27f4bf51e0087f79694893d037'
checksum/secret: 'dfb18b47dd62ad11226dcb141c57a41fcf226ace38ecfebc2e88d26fe650a5da'
labels:
app.kubernetes.io/name: provisioning-udm-listener
app.kubernetes.io/instance: ums
spec:
securityContext:
fsGroup: 65534
fsGroupChangePolicy: Always
sysctls: []
serviceAccountName: ums-provisioning-udm-listener
terminationGracePeriodSeconds: 5
containers:
- name: "udm-listener"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 65534
runAsNonRoot: true
runAsUser: 102
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
privileged: false # Explicitly set privileged to false
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener:0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
livenessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
startupProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
envFrom:
- configMapRef:
name: 'ums-provisioning-udm-listener'
command:
- "/bin/bash"
- "-c"
- |
/usr/sbin/univention-directory-listener \
-F \
-x \
-d "${DEBUG_LEVEL}" \
-b "${LDAP_BASE_DN}" \
-D "cn=admin,${LDAP_BASE_DN}" \
-n "${NOTIFIER_SERVER}" \
-m "/usr/lib/univention-directory-listener/system" \
-c "/var/lib/univention-directory-listener" \
-y "${LDAP_PASSWORD_FILE}" -Z
env:
- name: NATS_USER
value: "udmlistener"
- name: NATS_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-listener-credentials
key: "NATS_PASSWORD"
- name: EVENTS_USERNAME_UDM
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-listener-credentials
key: "EVENTS_USERNAME_UDM"
- name: EVENTS_PASSWORD_UDM
valueFrom:
secretKeyRef:
name: ums-provisioning-udm-listener-credentials
key: "EVENTS_PASSWORD_UDM"
ports:
- name: "http"
containerPort: 80
protocol: "TCP"
volumeMounts:
- name: "config-files"
mountPath: "/etc/univention"
- name: "config-files"
mountPath: "/etc/ldap/ldap.conf"
subPath: "ldap.conf"
- name: "ums-provisioning-udm-listener-ldap-credentials-volume"
mountPath: "/var/secrets/ldap_secret"
subPath: "ldap.secret"
readOnly: true
- name: "ums-provisioning-udm-listener-ldap-credentials-volume"
mountPath: "/var/secrets/machine_secret"
subPath: "machine.secret"
readOnly: true
- name: "ums-provisioning-udm-listener-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "data"
mountPath: "/var/lib/univention-directory-listener"
- name: "data"
mountPath: "/var/lib/univention-ldap/schema/id"
- name: "data"
mountPath: "/var/log/univention"
volumes:
- name: "config-files"
configMap:
name: "ums-provisioning-udm-listener-files"
- name: "ums-provisioning-udm-listener-ldap-credentials-volume"
secret:
secretName: "ums-provisioning-udm-listener-ldap-credentials"
- name: "ums-provisioning-udm-listener-ldap-tls-volume"
secret:
secretName: "ums-provisioning-udm-listener-ldap-tls"
volumeClaimTemplates:
- metadata:
name: "data"
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: "1Gi"
...
---
# Source: nubus/charts/nubusUmcServer/templates/statefulset-server.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: ums-umc-server
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
annotations:
intents.otterize.com/service-name: ums-umc-server
spec:
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: umc-server
app.kubernetes.io/instance: ums
template:
metadata:
annotations:
checksum/configmap: 4941eb87d99515bc5cb280ca1682863759908a792cc0554f1f5c0a9b5b3f15a5
labels:
app.kubernetes.io/name: umc-server
helm.sh/chart: nubusUmcServer-0.38.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.29"
spec:
securityContext:
fsGroup: 0
fsGroupChangePolicy: Always
serviceAccountName: ums-umc-server
terminationGracePeriodSeconds: 5
initContainers:
- name: "prepare-config"
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- DAC_OVERRIDE
- SETGID
- SETUID
- SYS_ADMIN
- NET_ADMIN
- AUDIT_CONTROL
- CHOWN
- FOWNER
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-umc-server
command:
- bash
- -c
- |
/entrypoint.d/50-entrypoint.sh
cp -a /var/lib/sss/* /target/var/lib/sss/
if [[ ! -d /target/var/lib/sss/pipes/private ]]; then
mkdir -p /target/var/lib/sss/pipes/private
fi
chmod 750 /target/var/lib/sss/pipes/private/
chown root:root -R /target/var/lib/sss/pipes /target/var/lib/sss/db /etc/sssd/sssd.conf
chmod 0600 /etc/sssd/sssd.conf
volumeMounts:
- name: "etc-ldap"
mountPath: "/etc/ldap"
- name: "etc-pam"
mountPath: "/etc/pam.d"
- name: "etc-sssd"
mountPath: "/etc/sssd"
- name: "etc-univention-ssl"
mountPath: "/etc/univention/ssl"
- name: "etc-univention-reports"
mountPath: "/etc/univention/directory/reports"
- name: "acl-cache"
mountPath: "/var/cache/univention-management-console/acls"
- name: "config-cache"
mountPath: "/var/cache/univention-config"
- name: "univention-logs"
mountPath: "/var/log/univention"
- name: "var-lib-sss"
mountPath: "/target/var/lib/sss"
- name: "var-www-univention"
mountPath: "/var/www/univention"
- name: "run"
mountPath: "/run"
- name: "tmp"
mountPath: "/tmp"
- name: "usr-share-umc-saml-idp"
mountPath: "/usr/share/univention-management-console/saml/idp"
- mountPath: /var/secrets/ssl
name: certificates
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: "ums-umc-server-ldap-credentials-volume"
mountPath: "/etc/ldap.secret"
subPath: ldap.secret
readOnly: true
- name: "ums-umc-server-ldap-credentials-volume"
mountPath: "/etc/machine.secret"
subPath: machine.secret
readOnly: true
- name: "ums-umc-server-smtp-credentials-custom-volume"
mountPath: "/var/secrets/smtp_secret"
subPath: password
readOnly: true
- name: "ums-umc-server-postgresql-opendesk-credentials-volume"
mountPath: "/var/secrets/db_password"
subPath: umcServerDatabasePassword
readOnly: true
- name: "ums-umc-server-memcached-opendesk-credentials-volume"
mountPath: "/var/secrets/memcached_password"
subPath: umcServerMemcachedPassword
readOnly: true
- name: "ums-umc-server-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "ums-umc-server-ldap-tls-volume"
mountPath: "/var/secrets/cert_pem"
subPath: "tls.crt"
readOnly: true
- name: "ums-umc-server-ldap-tls-volume"
mountPath: "/var/secrets/private_key"
subPath: "tls.key"
readOnly: true
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
cp -Rv /usr/share/univention-management-console/i18n/ /target/umc-i18n
cp -Rv /usr/share/univention-management-console/modules/ /target/umc-modules
cp -Rv /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules
cp -Rv /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d
cp -Rv /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d
cp -Rv /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers
mkdir -p /target/udm-modules /target/udm-hooks.d /target/udm-syntax.d /target/udm-handlers /target/umc-modules /target/umc-icons
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "umc-server"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d"
imagePullPolicy: IfNotPresent
command:
- /bin/bash
- -c
- |
/usr/sbin/univention-management-console-server \
--no-daemonize-module-processes \
--log-file stdout
env:
- name: "SELF_SERVICE_DB_SECRET"
valueFrom:
secretKeyRef:
name: ums-umc-server-postgresql-opendesk-credentials
key: umcServerDatabasePassword
- name: "SELF_SERVICE_MEMCACHED_SECRET"
valueFrom:
secretKeyRef:
name: ums-umc-server-memcached-opendesk-credentials
key: umcServerMemcachedPassword
- name: "PYTHONDONTWRITEBYTECODE"
value: "1"
envFrom:
- configMapRef:
name: ums-umc-server
volumeMounts:
- name: "etc-ldap"
mountPath: "/etc/ldap"
readOnly: true
- name: "etc-pam"
mountPath: "/etc/pam.d"
readOnly: true
- name: "etc-sssd"
mountPath: "/etc/sssd"
readOnly: true
- name: "etc-univention-ssl"
mountPath: "/etc/univention/ssl"
readOnly: true
- name: "etc-univention-reports"
mountPath: "/etc/univention/directory/reports"
readOnly: true
- name: "acl-cache"
mountPath: "/var/cache/univention-management-console/acls"
- name: "config-cache"
mountPath: "/var/cache/univention-config"
readOnly: true
- name: "univention-logs"
mountPath: "/var/log/univention"
- name: "var-lib-sss"
mountPath: "/var/lib/sss"
- name: "var-www-univention"
mountPath: "/var/www/univention"
readOnly: true
- name: "run"
mountPath: "/run"
- name: "tmp"
mountPath: "/tmp"
- name: "usr-share-umc-saml-idp"
mountPath: "/usr/share/univention-management-console/saml/idp"
readOnly: true
- mountPath: /var/secrets/ssl
name: certificates
- name: "config-map-ucr"
mountPath: "/etc/univention/base.conf"
subPath: "base.conf"
- name: "config-map-ucr"
mountPath: "/etc/univention/base-defaults.conf"
subPath: "base-defaults.conf"
- name: "ums-umc-server-ldap-credentials-volume"
mountPath: "/etc/ldap.secret"
subPath: ldap.secret
readOnly: true
- name: "ums-umc-server-ldap-credentials-volume"
mountPath: "/etc/machine.secret"
subPath: machine.secret
readOnly: true
- name: "ums-umc-server-smtp-credentials-custom-volume"
mountPath: "/var/secrets/smtp_secret"
subPath: password
readOnly: true
- name: "ums-umc-server-postgresql-opendesk-credentials-volume"
mountPath: "/var/secrets/db_password"
subPath: umcServerDatabasePassword
readOnly: true
- name: "ums-umc-server-memcached-opendesk-credentials-volume"
mountPath: "/var/secrets/memcached_password"
subPath: umcServerMemcachedPassword
readOnly: true
- name: "ums-umc-server-ldap-tls-volume"
mountPath: "/var/secrets/ca_cert"
subPath: "ca.crt"
readOnly: true
- name: "ums-umc-server-ldap-tls-volume"
mountPath: "/var/secrets/cert_pem"
subPath: "tls.crt"
readOnly: true
- name: "ums-umc-server-ldap-tls-volume"
mountPath: "/var/secrets/private_key"
subPath: "tls.key"
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/udm/modules
subPath: udm-modules
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d
subPath: udm-hooks.d
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d
subPath: udm-syntax.d
readOnly: true
- name: plugin-targets
mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers
subPath: udm-handlers
readOnly: true
- name: plugin-targets
mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/
subPath: umc-icons
readOnly: true
- name: plugin-targets
mountPath: /usr/share/univention-management-console/modules/
subPath: umc-modules
readOnly: true
- name: plugin-targets
mountPath: /usr/share/univention-management-console/i18n
subPath: umc-i18n
readOnly: true
- name: passwordreset-email-body
mountPath: /usr/share/univention-self-service/email_bodies
readOnly: true
ports:
- name: http
containerPort: 8090
protocol: TCP
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
tcpSocket:
port: http
timeoutSeconds: 3
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
tcpSocket:
port: http
timeoutSeconds: 3
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "sssd-sidecar"
securityContext:
allowPrivilegeEscalation: true
capabilities:
add:
- DAC_OVERRIDE
- SETGID
- AUDIT_WRITE
- SETUID
- CHOWN
- SETPCAP
- FOWNER
- FSETID
- KILL
- MKNOD
- NET_BIND_SERVICE
- SYS_CHROOT
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d"
imagePullPolicy: IfNotPresent
command:
- sh
- -c
- |
sssd -i --logger stderr --debug-level 2
envFrom:
- configMapRef:
name: ums-umc-server
volumeMounts:
- name: "etc-ldap"
mountPath: "/etc/ldap"
readOnly: true
- name: "etc-pam"
mountPath: "/etc/pam.d"
readOnly: true
- name: "etc-sssd"
mountPath: "/etc/sssd"
readOnly: true
- name: "etc-univention-ssl"
mountPath: "/etc/univention/ssl"
readOnly: true
- name: "run"
mountPath: "/run"
- name: "usr-share-umc-saml-idp"
readOnly: true
mountPath: "/usr/share/univention-management-console/saml/idp"
- name: "var-lib-sss"
mountPath: "/var/lib/sss"
- name: "sssd-db"
mountPath: "/var/lib/sss/db/"
- mountPath: /var/secrets/ssl
name: certificates
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
livenessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
exec:
command:
- sh
- -c
- |
exit 0
failureThreshold: 10
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 5
volumes:
- name: certificates
secret:
secretName: 'ums-saml-tls'
- name: "etc-ldap"
emptyDir:
medium: "Memory"
- name: "etc-pam"
emptyDir:
medium: "Memory"
- name: "etc-sssd"
emptyDir:
medium: "Memory"
- name: "etc-univention-ssl"
emptyDir:
medium: "Memory"
- name: "etc-univention-reports"
emptyDir:
medium: "Memory"
- name: "acl-cache"
emptyDir:
medium: "Memory"
- name: "config-cache"
emptyDir:
medium: "Memory"
- name: "univention-logs"
emptyDir:
medium: "Memory"
- name: "sssd-socket"
emptyDir:
medium: "Memory"
- name: "var-lib-sss"
emptyDir: {}
- name: "var-www-univention"
emptyDir:
medium: "Memory"
- name: "run"
emptyDir:
medium: "Memory"
- name: "tmp"
emptyDir:
medium: "Memory"
- name: "usr-share-umc-saml-idp"
emptyDir:
medium: "Memory"
- name: "sssd-db"
emptyDir:
medium: "Memory"
- name: "config-map-ucr"
configMap:
name: "ums-stack-data-ums-ucr"
- name: "ums-umc-server-ldap-credentials-volume"
secret:
secretName: ums-umc-server-ldap-credentials
- name: "ums-umc-server-smtp-credentials-custom-volume"
secret:
secretName: ums-umc-server-smtp-credentials-custom
- name: "ums-umc-server-postgresql-opendesk-credentials-volume"
secret:
secretName: ums-umc-server-postgresql-opendesk-credentials
- name: "ums-umc-server-memcached-opendesk-credentials-volume"
secret:
secretName: ums-umc-server-memcached-opendesk-credentials
- name: "ums-umc-server-ldap-tls-volume"
secret:
secretName: "ums-umc-server-ldap-tls"
- name: passwordreset-email-body
configMap:
name: ums-umc-server-pw-reset-email-body
defaultMode: 0444
- name: plugin-targets
emptyDir: {}
---
# Source: nubus/charts/nubusKeycloakBootstrap/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "ums-keycloak-bootstrap-bootstrap-1"
labels:
app.kubernetes.io/name: keycloak-bootstrap
helm.sh/chart: nubusKeycloakBootstrap-0.10.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
annotations:
argocd.argoproj.io/hook: Sync
spec:
template:
metadata:
annotations:
checksum/config: dfc68a03cb67e395e679d403e3c49f1de9f842af818faea64e4b85bb1660699b
intents.otterize.com/service-name: ums-keycloak-bootstrap
labels:
app.kubernetes.io/name: keycloak-bootstrap
helm.sh/chart: nubusKeycloakBootstrap-0.10.2
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "0.0.1"
spec:
restartPolicy: "Never"
serviceAccountName: ums-keycloak-bootstrap
terminationGracePeriodSeconds: 5
initContainers:
- name: "wait-for-keycloak"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-keycloak-bootstrap-init
command: ["/usr/bin/python3", "/scripts/wait-for-keycloak.py"]
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- name: "wait-for-keycloak"
mountPath: "/scripts"
containers:
- name: "univention-keycloak-bootstrap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap:0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa"
imagePullPolicy: "IfNotPresent"
command:
- "/app/entrypoint.sh"
envFrom:
- configMapRef:
name: "ums-keycloak-bootstrap"
env:
- name: KEYCLOAK_USERNAME
value: kcadmin
- name: KEYCLOAK_PASSWORD
valueFrom:
secretKeyRef:
name: ums-opendesk-keycloak-credentials
key: admin_password
- name: LDAP_BIND_DN
value: uid=ldapsearch_keycloak,cn=users,dc=swp-ldap,dc=internal
- name: LDAP_BIND_PW
valueFrom:
secretKeyRef:
name: ums-keycloak-bootstrap-ldap-opendesk-credentials
key: password
volumeMounts:
- mountPath: "/bootstrap"
name: "bootstrap-volume"
- mountPath: "/credentials/ldapread.secret"
name: "ldap-credentials-volume"
subPath: password
- mountPath: "/credentials/keycloak.secret"
name: "keycloak-credentials-volume"
subPath: admin_password
- mountPath: "/tmp"
name: "temp-dir"
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: "wait-for-keycloak"
configMap:
name: ums-keycloak-bootstrap-init
- name: "keycloak-credentials-volume"
secret:
secretName: ums-opendesk-keycloak-credentials
- name: "ldap-credentials-volume"
secret:
secretName: ums-keycloak-bootstrap-ldap-opendesk-credentials
- name: "bootstrap-volume"
configMap:
name: "ums-keycloak-bootstrap-bootstrap-data"
- name: "temp-dir"
emptyDir:
sizeLimit: "20Mi"
...
---
# Source: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: ums-provisioning-register-consumers-1
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-register-consumers-1
helm.sh/chart: nubusProvisioning-0.49.3
annotations:
intents.otterize.com/service-name: ums-provisioning-register-consumers
spec:
template:
metadata:
annotations:
checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355
intents.otterize.com/service-name: ums-provisioning-register-consumers
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-provisioning-register-consumers-1
helm.sh/chart: nubusProvisioning-0.49.3
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
sysctls:
- name: net.ipv4.ip_unprivileged_port_start
value: "1"
serviceAccountName: ums-provisioning
restartPolicy: Never
volumes:
- name: consumer-secrets
projected:
sources:
- secret:
name: "ums-provisioning-ox-credentials"
items:
- key: "ox-connector.json"
path: oxconsumer.json
- secret:
name: "ums-provisioning-register-consumers-json-secrets"
items:
- key: "portal-consumer.json"
path: portalconsumer.json
- secret:
name: "ums-provisioning-register-consumers-json-secrets"
items:
- key: "selfservice.json"
path: selfserviceconsumer.json
- name: "scripts-volume"
configMap:
name: ums-provisioning-wait-for-api
defaultMode: 0555
- name: wait-for-data-loader
configMap:
name: ums-provisioning-register-consumers
initContainers:
- name: wait-for-provisioning-api
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-register-consumers
command: ["/bin/bash", "-c", "/scripts/wait-for-api.sh ${PROVISIONING_API_BASE_URL}"]
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
volumeMounts:
- name: scripts-volume
mountPath: /scripts
- name: wait-for-data-loader
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command: ["/bin/bash", "/scripts/wait-for-data-loader.sh"]
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-provisioning-register-consumers
env:
- name: UDM_USERNAME
value: "cn=admin"
- name: UDM_PASSWORD
valueFrom:
secretKeyRef:
name: ums-ldap-server-credentials
key: adminPassword
volumeMounts:
- name: wait-for-data-loader
mountPath: /scripts
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
containers:
- name: consumer-registration
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: consumer-secrets
mountPath: "/secrets"
envFrom:
- configMapRef:
name: ums-provisioning-register-consumers
env:
- name: ADMIN_USERNAME
value: "admin"
- name: ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: ums-provisioning-api-credentials
key: ADMIN_PASSWORD
command:
- "/bin/sh"
- "-c"
args:
- |
for file in /secrets/*; do
filename=$(basename "${file}" .json)
response=$(set +x; curl -s -o response.txt -w "%{http_code}" -u "${ADMIN_USERNAME}":"${ADMIN_PASSWORD}" \
-H 'Content-Type: application/json' \
-d @"${file}" "${PROVISIONING_API_BASE_URL}")
if [ "${response}" -eq 201 ]; then
echo "Successful registration of the consumer: "${filename}""
elif [ "${response}" -eq 200 ]; then
echo "Consumer with the name '"${filename}"' is already registered with the same parameters"
else
echo "Failed to register the consumer: "${filename}"
Response code: "${response}"
Response body: $(cat response.txt)"
exit 1
fi
echo ------------------------------------
done
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
---
# Source: nubus/charts/nubusStackDataUms/templates/job-load-data-ums.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: ums-stack-data-ums-2
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
spec:
backoffLimit: 6
template:
metadata:
name: stack-data-ums
labels:
app.kubernetes.io/name: stack-data-ums
helm.sh/chart: nubusStackDataUms-0.89.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
annotations:
checksum/config: '9bd899cd20b0212ff2570ea5a8a25e67f4e8beb6a084ccd940e2c244da20f9c4'
checksum/config-data: '7283ada7d5683284a9b1e156a903fe8a82e0bd1ee43fe4a02c59db2b15aa39ba'
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: ums-stack-data-ums
spec:
restartPolicy: Never
serviceAccountName: ums-stack-data-ums
initContainers:
- name: "load-internal-plugins"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb"
imagePullPolicy: "IfNotPresent"
command:
- sh
- -c
- |
mkdir /target/udm-data-loader
cp -RLv --preserve=all /join-data/* /target/udm-data-loader
volumeMounts:
- name: plugin-targets
mountPath: /target
- name: data
mountPath: /join-data
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-portal-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-ox-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: "load-opendesk-a2g-mapper-extension"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: plugin-targets
mountPath: /target
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
- name: wait-for-udm-rest-api
command: ["/bin/sh", "-c", "/usr/local/bin/wait-for-udm-rest-api.py"]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-stack-data-ums
volumeMounts:
- name: "ums-udm-rest-api-credentials"
mountPath: /run/secrets/univention.de/data-loader/udm_secret
subPath: "machine.secret"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
containers:
- name: "load-data-ums"
command:
- process-all.sh
- --template-context
- /template-context/context.yaml
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb"
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: ums-stack-data-ums
env:
- name: SET_STATUS_FLAG
value: "true"
volumeMounts:
- name: "ums-udm-rest-api-credentials"
mountPath: /run/secrets/univention.de/data-loader/udm_secret
subPath: "machine.secret"
- name: "plugin-targets"
mountPath: "/join-data"
subPath: udm-data-loader
readOnly: true
- name: context-config
mountPath: /template-context
readOnly: true
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
volumes:
- name: "ums-udm-rest-api-credentials"
secret:
secretName: "ums-udm-rest-api-credentials"
- name: "data"
configMap:
name: "ums-stack-data-ums-data"
- name: "context-config"
secret:
secretName: "ums-stack-data-ums-context"
- name: "plugin-targets"
emptyDir: {}
...
---
# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-guardian-management-ui
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: guardian
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: Prefix
path: /univention/guardian/management-ui
backend:
service:
name: "ums-guardian-management-ui"
port:
number: 80
...
---
# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-guardian-management-api
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: guardian
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: Prefix
path: /guardian/management
backend:
service:
name: "ums-guardian-management-api"
port:
number: 80
...
---
# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-guardian-authorization-api
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: guardian
app.kubernetes.io/version: 2.0.0
helm.sh/chart: nubusGuardian-0.17.0
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: Prefix
path: /guardian/authorization
backend:
service:
name: "ums-guardian-authorization-api"
port:
number: 80
...
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/ingress-proxy.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-keycloak-extensions-proxy
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ums-keycloak-extensions-proxy
app.kubernetes.io/version: 21.0.1
helm.sh/chart: nubusKeycloakExtensions-0.16.1
annotations:
nginx.ingress.kubernetes.io/proxy-buffer-size: 8k
nginx.org/proxy-buffer-size: 8k
spec:
ingressClassName: nginx
tls:
- hosts:
- "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: Prefix
path: /realms/
backend:
service:
name: ums-keycloak-extensions-proxy
port:
name: http
- pathType: Prefix
path: /js/
backend:
service:
name: ums-keycloak-extensions-proxy
port:
name: http
- pathType: Prefix
path: /resources/
backend:
service:
name: ums-keycloak-extensions-proxy
port:
name: http
- pathType: Prefix
path: /fingerprintjs
backend:
service:
name: ums-keycloak-extensions-proxy
port:
name: http
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-portal-frontend-rewrites
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: portal-frontend
app.kubernetes.io/version: 1.16.0
helm.sh/chart: nubusPortalFrontend-0.63.0
annotations:
intents.otterize.com/service-name: ums-portal-frontend
nginx.ingress.kubernetes.io/rewrite-target: /$2$3
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: ImplementationSpecific
path: /univention/(portal|selfservice)/$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention/(portal|selfservice)/index.html$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention/(portal|selfservice)/(css|fonts|i18n|media|js|oidc|custom)(/.*)$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention/(portal)/(icons)(/.*)$
backend:
service:
name: ums-portal-frontend
port:
name: http
...
---
# Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-portal-frontend-redirects
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: portal-frontend
app.kubernetes.io/version: 1.16.0
helm.sh/chart: nubusPortalFrontend-0.63.0
annotations:
intents.otterize.com/service-name: ums-portal-frontend
nginx.ingress.kubernetes.io/permanent-redirect: /univention/portal/
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: ImplementationSpecific
path: /$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention/$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention/portal$
backend:
service:
name: ums-portal-frontend
port:
name: http
- pathType: ImplementationSpecific
path: /univention/selfservice$
backend:
service:
name: ums-portal-frontend
port:
name: http
...
---
# Source: nubus/charts/nubusPortalServer/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-portal-server
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: portal-server
app.kubernetes.io/version: 1.16.0
helm.sh/chart: nubusPortalServer-0.63.0
annotations:
intents.otterize.com/service-name: ums-portal-server
nginx.ingress.kubernetes.io/rewrite-target: /$2$3
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: ImplementationSpecific
path: /()(univention/portal/|univention/selfservice/)(portal.json|navigation.json)$
backend:
service:
name: ums-portal-server
port:
name: http
- pathType: ImplementationSpecific
path: /()(univention/portal/|univention/selfservice/)(api/v1/me)$
backend:
service:
name: ums-portal-server
port:
name: http
...
---
# Source: nubus/charts/nubusUdmRestApi/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-udm-rest-api
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: udm-rest-api
app.kubernetes.io/version: 12.0.7
helm.sh/chart: nubusUdmRestApi-0.29.0
annotations:
intents.otterize.com/service-name: ums-udm-rest-api
nginx.ingress.kubernetes.io/configuration-snippet-disabled: |
rewrite ^/univention(/udm/.*)$ $1 break;
nginx.ingress.kubernetes.io/proxy-buffer-size: 64k
nginx.ingress.kubernetes.io/rewrite-target: /$2$3
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: ImplementationSpecific
path: /(univention/)(udm/.*)$
backend:
service:
name: ums-udm-rest-api
port:
name: http
...
---
# Source: nubus/charts/nubusUmcGateway/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-umc-gateway
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: umc-gateway
app.kubernetes.io/version: 12.0.29
helm.sh/chart: nubusUmcGateway-0.38.0
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2$3
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de, https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
spec:
ingressClassName: nginx
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: ImplementationSpecific
path: /()(univention/)(languages.json|meta.json|theme.css)$
backend:
service:
name: ums-umc-gateway
port:
name: http
- pathType: ImplementationSpecific
path: /()(univention/)((js|management|themes)/.*)$
backend:
service:
name: ums-umc-gateway
port:
name: http
- pathType: ImplementationSpecific
path: /()(univention/login/)(dialog.js|main.js|LoginDialog.js|i18n/en/main.json)$
backend:
service:
name: ums-umc-gateway
port:
name: http
...
---
# Source: nubus/charts/nubusUmcServer/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-umc-server
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: umc-server
app.kubernetes.io/version: 12.0.29
helm.sh/chart: nubusUmcServer-0.38.0
annotations:
intents.otterize.com/service-name: ums-umc-server
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header X-UMC-HTTPS 'on';
nginx.ingress.kubernetes.io/rewrite-target: /$2$3
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- pathType: ImplementationSpecific
path: /(univention)/(auth|logout|saml|get|set|command|upload)(.*)$
backend:
service:
name: ums-umc-server
port:
name: http
...
---
# Source: nubus/templates/ingresses.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ums-portal-customization
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 128k
nginx.ingress.kubernetes.io/proxy-buffer-size: 64k
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
nginx.ingress.kubernetes.io/proxy-busy-buffers-size: 128k
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
nginx.ingress.kubernetes.io/proxy-set-headers: |
Host $http_host;
X-Forwarded-For $proxy_add_x_forwarded_for;
X-Forwarded-Host $http_x_forwarded_host;
X-Forwarded-Port $http_x_forwarded_port;
X-Forwarded-Proto $http_x_forwarded_proto;
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /favicon.ico$
pathType: ImplementationSpecific
backend:
service:
name: ums-portal-frontend
port:
number: 80
---
# Source: nubus/charts/keycloak/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/configmap-management-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/configmap-management-ui.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/configmap-open-policy-agent.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/configmap-provisioning.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/deployment-authorization-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/deployment-management-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/deployment-management-ui.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/deployment-open-policy-agent.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/extraSecrets.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/job-provisioning.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/service-authorization-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/service-management-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/service-management-ui.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/service-open-policy-agent.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusGuardian/templates/serviceaccount.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-handler.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-proxy.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/ingress-handler.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/service-handler.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusKeycloakExtensions/templates/service-proxy.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-ldif-producer.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusLdapServer/templates/preflight-check.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH222
---
# Source: nubus/charts/nubusLdapServer/templates/secret-ldap-server-auth.yaml
# TEST
---
# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalConsumer/templates/extraSecrets.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalConsumer/templates/secret.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalFrontend/templates/branding-configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalFrontend/templates/service.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalServer/templates/deployment.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalServer/templates/extraIngresses.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalServer/templates/ingress.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalServer/templates/service.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalServer/templates/serviceaccount.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusPortalServer/templates/tests/test-connection.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-events-and-consumer-api.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-prefill.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/deployment-udm-transformer.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/extraSecrets.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/gateway.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/ingress.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/service.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/serviceaccount.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusProvisioning/templates/virtualservice.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/deployment.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusSelfServiceConsumer/templates/extraSecrets.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusStackDataUms/templates/configmap-data.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: nubus/charts/nubusStackDataUms/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusStackDataUms/templates/job-load-data-ums.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusStackDataUms/templates/secret.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: nubus/charts/nubusStackDataUms/templates/serviceaccount.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUdmRestApi/templates/deployment.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUdmRestApi/templates/ingress.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUdmRestApi/templates/tests/test-connection.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023-2024 Univention GmbH
---
# Source: nubus/charts/nubusUmcGateway/templates/deployment.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUmcGateway/templates/ingress.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUmcServer/templates/deployment-load-balancer.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUmcServer/templates/ingress.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/charts/nubusUmcServer/templates/statefulset-server.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/cert-manager.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/ingresses.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/nubusSecrets.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/postgresql-provisioning-configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/postgresql-provisioning-job.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/preflight-check.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nubus/templates/cert-manager.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: "ums-ecdsa-ca-cert"
spec:
secretName: "ums-ecdsa-ca-secret"
duration: 87600h0m0s
renewBefore: 78840h0m0s
privateKey:
algorithm: ECDSA
size: 256
isCA: true
issuerRef:
name: "ums-ecdsa-ss-issuer"
kind: Issuer
commonName: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
dnsNames:
- yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
...
---
# Source: nubus/templates/cert-manager.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: "ums-saml"
spec:
secretName: "ums-saml-tls"
duration: 87600h0m0s
renewBefore: 78840h0m0s
subject:
organizations:
- yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
privateKey:
algorithm: RSA
encoding: PKCS1
size: 2048
usages:
- digital signature
- key encipherment
- server auth
- client auth
dnsNames:
- "ums-umc-server"
- "ums-umc-server.yschmidt-opendesk-argo.svc.cluster.local"
issuerRef:
name: "ums-ca-issuer"
kind: Issuer
...
---
# Source: nubus/templates/cert-manager.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: "ums-ca-issuer"
spec:
ca:
secretName: "ums-ecdsa-ca-secret"
...
---
# Source: nubus/templates/cert-manager.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: "ums-ecdsa-ss-issuer"
spec:
selfSigned: {}
...
---
# Source: nubus/charts/nubusPortalServer/templates/tests/test-connection.yaml
apiVersion: "v1"
kind: "Pod"
metadata:
name: "ums-portal-server-test-connection"
labels:
app.kubernetes.io/name: portal-server
helm.sh/chart: nubusPortalServer-0.63.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.16.0"
annotations:
"helm.sh/hook": test
spec:
containers:
- name: "wget"
image: "busybox"
command: ['wget']
args: ['ums-portal-server:80']
restartPolicy: "Never"
...
---
# Source: nubus/charts/nubusUdmRestApi/templates/tests/test-connection.yaml
apiVersion: "v1"
kind: "Pod"
metadata:
name: "ums-udm-rest-api-test-connection"
labels:
app.kubernetes.io/name: udm-rest-api
helm.sh/chart: nubusUdmRestApi-0.29.0
app.kubernetes.io/instance: ums
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "12.0.7"
annotations:
"helm.sh/hook": test
spec:
containers:
- name: "wget"
image: "busybox"
command: ['wget']
args: ['ums-udm-rest-api:9979']
restartPolicy: "Never"
...
---
# Source: intercom-service/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: intercom-service
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: intercom-service
helm.sh/chart: intercom-service-2.12.0
app.kubernetes.io/instance: intercom-service
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.4"
annotations:
automountServiceAccountToken: false
...
---
# Source: intercom-service/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "intercom-service"
labels:
app.kubernetes.io/name: intercom-service
helm.sh/chart: intercom-service-2.12.0
app.kubernetes.io/instance: intercom-service
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.4"
type: Opaque
stringData:
SECRET: "3eb73e36131cd6a817564c2144363875cf63a490"
INTERCOM_URL: "https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
BASE_URL: "https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
PORT: "8008"
PROXY: "false"
ENABLE_SESSION_COOKIE: "true"
SESSION_ROLLING_DURATION: "86400"
LOG_LEVEL: "INFO"
ORIGIN_REGEX: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
USER_UNIQUE_MAPPER: "opendesk_username"
USERNAME_CLAIM: "opendesk_username"
# Keycloak
ISSUER_BASE_URL: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk"
KEYCLOAK_URL: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
REALM_NAME: "opendesk"
# Nordeck
NORDECK_MODE: "test"
NORDECK_URL: "https://matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
# Matrix
MATRIX_ENABLED: "true"
MATRIX_URL: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
MATRIX_SERVER_NAME: "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
MATRIX_AS_SECRET: "f4a859990d1d37276a77e88ccd1e67d158b5e18f"
# Nextcloud
NC_ENABLED: "true"
NC_ORIGIN: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
NC_URL: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
NC_AUDIENCE: "opendesk-nextcloud"
# XWIKI
XWIKI_ENABLED: "true"
XWIKI_URL: "https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
XWIKI_AUDIENCE: "opendesk-xwiki"
# UCS
PORTAL_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
PORTAL_API_KEY: "1e2eb0fc3815d766ef1be11fb4edba676856ba52"
# Redis
REDIS_HOST: "redis-headless"
REDIS_PORT: "6379"
REDIS_SSL: "false"
REDIS_MTLS: "false"
REDIS_PASSWORD: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e"
# OIDC
CLIENT_ID: opendesk-intercom
CLIENT_SECRET: "d42f6afee33e28f01222383c86e8741b98e14924"
...
---
# Source: intercom-service/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "intercom-service"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: intercom-service
helm.sh/chart: intercom-service-2.12.0
app.kubernetes.io/instance: intercom-service
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.4"
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 8008
targetPort: http
protocol: "TCP"
selector:
app.kubernetes.io/name: intercom-service
app.kubernetes.io/instance: intercom-service
...
---
# Source: intercom-service/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: "intercom-service"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: intercom-service
helm.sh/chart: intercom-service-2.12.0
app.kubernetes.io/instance: intercom-service
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.4"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: intercom-service
app.kubernetes.io/instance: intercom-service
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/secret: 06e5393faabd76be04bd2ddb50a48960c3301970c0b1fc62ae8d4c1bef399c0b
labels:
app.kubernetes.io/name: intercom-service
helm.sh/chart: intercom-service-2.12.0
app.kubernetes.io/instance: intercom-service
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.4"
spec:
securityContext:
fsGroup: 1000
fsGroupChangePolicy: Always
serviceAccountName: "intercom-service"
initContainers:
containers:
- name: "intercom-service"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/intercom-service:2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1"
imagePullPolicy: IfNotPresent
env:
- name: REDIS_USER
value: default
envFrom:
- secretRef:
name: intercom-service
livenessProbe:
tcpSocket:
port: "http"
initialDelaySeconds: 15
periodSeconds: 5
timeoutSeconds: 2
failureThreshold: 3
successThreshold: 1
readinessProbe:
tcpSocket:
port: "http"
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 15
successThreshold: 1
ports:
- name: http
containerPort: 8008
protocol: TCP
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 64Mi
volumeMounts:
volumes:
- name: "temp-dir"
emptyDir:
sizeLimit: "20Mi"
...
---
# Source: intercom-service/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "intercom-service"
labels:
app.kubernetes.io/name: intercom-service
helm.sh/chart: intercom-service-2.12.0
app.kubernetes.io/instance: intercom-service
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "1.4"
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: intercom-service
port:
name: http
...
---
# Source: intercom-service/templates/configmap-provisioning.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2024 Univention GmbH
---
# Source: nginx-s3-gateway/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: nubus-nginx-s3-gateway
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: nginx-s3-gateway/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "nubus-nginx-s3-gateway"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
annotations:
stringData:
accessKey: ums_user
secretKey: 915f15805278ef774a1cf3abfa6b8623c1fa4544
...
---
# Source: nginx-s3-gateway/templates/configmap.yaml
apiVersion: "v1"
kind: "ConfigMap"
metadata:
name: "nubus-nginx-s3-gateway"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
annotations:
data:
server_variables.conf.template: |
# Variable indicating to the awssig4.js script that singing key
# caching is turned off. This feature uses the keyval store, so it
# is only enabled when using NGINX Plus.
set $cache_signing_key_enabled 0;
# Variable indicating to the awscredentials.js script that session token
# caching is turned on. This feature uses the keyval store, so it
# is only enabled when using NGINX Plus.
set $cache_instance_credentials_enabled 0;
...
---
# Source: nginx-s3-gateway/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "nubus-nginx-s3-gateway"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "gateway"
port: 8080
targetPort: "gateway"
protocol: "TCP"
selector:
app.kubernetes.io/name: nginx-s3-gateway
app.kubernetes.io/instance: nubus
...
---
# Source: nginx-s3-gateway/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: nubus-nginx-s3-gateway
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nginx-s3-gateway
app.kubernetes.io/instance: nubus
strategy:
type: RollingUpdate
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: nubus-nginx-s3-gateway
containers:
- name: "nginx-s3-gateway"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/nginxinc/nginx-s3-gateway:unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4"
imagePullPolicy: IfNotPresent
env:
- name: "ALLOW_DIRECTORY_LIST"
value: "false"
- name: "AWS_SIGS_VERSION"
value: "4"
- name: "AWS_ACCESS_KEY_ID"
valueFrom:
secretKeyRef:
name: nubus-nginx-s3-gateway
key: accessKey
- name: "AWS_SECRET_ACCESS_KEY"
valueFrom:
secretKeyRef:
name: nubus-nginx-s3-gateway
key: secretKey
- name: "S3_BUCKET_NAME"
value: "ums"
- name: "S3_REGION"
value: "eu-west-1"
- name: "S3_SERVER_PORT"
value: "443"
- name: "S3_SERVER_PROTO"
value: "https"
- name: "S3_SERVER"
value: "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "S3_STYLE"
value: "path"
- name: "PROVIDE_INDEX_PAGE"
value: "false"
- name: "DEBUG"
value: "false"
livenessProbe:
httpGet:
path: "/health"
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
httpGet:
path: "/health"
port: 8080
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: gateway
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 100m
memory: 16Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
- name: "cache"
mountPath: "/var/cache/nginx"
- name: "conf"
mountPath: "/etc/nginx/conf.d"
- name: "server-variables"
mountPath: "/etc/nginx/templates/gateway/server_variables.conf.template"
subPath: "server_variables.conf.template"
volumes:
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "100Mi"
- name: "cache"
emptyDir:
medium: "Memory"
sizeLimit: "100Mi"
- name: "conf"
emptyDir:
medium: "Memory"
sizeLimit: "1Mi"
- name: "server-variables"
configMap:
name: nubus-nginx-s3-gateway
items:
- key: "server_variables.conf.template"
path: "server_variables.conf.template"
...
---
# Source: nginx-s3-gateway/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "nubus-nginx-s3-gateway"
labels:
app.kubernetes.io/name: nginx-s3-gateway
helm.sh/chart: nginx-s3-gateway-1.0.1
app.kubernetes.io/instance: nubus
app.kubernetes.io/managed-by: Helm
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /portal-assets/icons/$2/$3
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /univention/(portal|selfservice)/icons/(logos|entries)/(.*)$
pathType: Prefix
backend:
service:
name: nubus-nginx-s3-gateway
port:
name: gateway
...
---
# Source: opendesk-keycloak-bootstrap/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: opendesk-keycloak-bootstrap
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-keycloak-bootstrap
helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0
app.kubernetes.io/instance: opendesk-keycloak-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: opendesk-keycloak-bootstrap/templates/secrect.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "opendesk-keycloak-bootstrap"
labels:
app.kubernetes.io/name: opendesk-keycloak-bootstrap
helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0
app.kubernetes.io/instance: opendesk-keycloak-bootstrap
app.kubernetes.io/managed-by: Helm
stringData:
values.yaml: |
additionalAnnotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
additionalLabels: {}
affinity: {}
cleanup:
deletePodsOnSuccess: true
deletePodsOnSuccessTimeout: 60
keepPVCOnDelete: false
common:
exampleValue: common-chart
global:
domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
hosts:
adminBot: adminbot
collabora: office
cryptpad: pad
element: chat
intercomService: ics
jitsi: meet
keycloak: id
matrixNeoBoardWidget: matrix-neoboard-widget
matrixNeoChoiceWidget: matrix-neochoice-widget
matrixNeoDateFixBot: matrix-neodatefix-bot
matrixNeoDateFixWidget: matrix-neodatefix-widget
minioApi: objectstore
minioConsole: objectstore-ui
nextcloud: files
notes: notes
nubus: portal
openproject: projects
openxchange: webmail
portal: portal
static: static
synapse: matrix
synapseAdmin: synapse-admin
synapseFederation: matrix-federation
whiteboard: whiteboard
xwiki: wiki
imagePullSecrets: []
registry: registry.opencode.de
config:
clientAccessRestrictions:
dovecot:
client: opendesk-dovecot
group: managed-by-attribute-Groupware
role: opendesk-dovecot-access-control
scope: opendesk-dovecot-scope
matrix:
client: opendesk-matrix
group: managed-by-attribute-Livecollaboration
role: opendesk-matrix-access-control
scope: opendesk-matrix-scope
nextcloud:
client: opendesk-nextcloud
group: managed-by-attribute-Fileshare
role: opendesk-nextcloud-access-control
scope: opendesk-nextcloud-scope
notes:
client: opendesk-notes
group: managed-by-attribute-Notes
role: opendesk-notes-access-control
scope: opendesk-notes-scope
openproject:
client: opendesk-openproject
group: managed-by-attribute-Projectmanagement
role: opendesk-openproject-access-control
scope: opendesk-openproject-scope
oxAppSuite:
client: opendesk-oxappsuite
group: managed-by-attribute-Groupware
role: opendesk-oxappsuite-access-control
scope: opendesk-oxappsuite-scope
xwiki:
client: opendesk-xwiki
group: managed-by-attribute-Knowledgemanagement
role: opendesk-xwiki-access-control
scope: opendesk-xwiki-scope
custom: {}
debug:
enabled: false
pauseBeforeScriptStart: 0
keycloak:
admin:
secret:
name: ""
values:
password: 81d3190e7a7467137ccb11c6fdd2c296986275db
username: kcadmin
intraCluster:
enabled: true
internalBaseUrl: http://ums-keycloak.yschmidt-opendesk-argo.svc.cluster.local:8080
realm: opendesk
managed:
clientScopes:
- acr
- web-origins
- email
- profile
- microprofile-jwt
- role_list
- offline_access
- roles
- address
- phone
clients:
- guardian-management-api
- guardian-scripts
- guardian-ui
- UMC
- ${client_account}
- ${client_account-console}
- ${client_admin-cli}
- ${client_broker}
- ${client_realm-management}
- ${client_security-admin-console}
opendesk:
clientScopes:
- name: read_contacts
protocol: openid-connect
- name: write_contacts
protocol: openid-connect
- description: Scope for the claims required by openDesk's OpenProject instance.
name: opendesk-openproject-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: openproject_admin
id.token.claim: true
jsonType.label: String
user.attribute: opendeskProjectmanagementAdmin
userinfo.token.claim: true
consentRequired: false
name: opendeskProjectmanagementAdmin
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: email
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: email
userinfo.token.claim: true
consentRequired: false
name: email
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: given_name
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: firstName
userinfo.token.claim: true
consentRequired: false
name: given name
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: family_name
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: lastName
userinfo.token.claim: true
consentRequired: false
name: family name
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- description: Scope for the claims required by openDesk's Nextcloud instance.
name: opendesk-nextcloud-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: email
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: email
userinfo.token.claim: true
consentRequired: false
name: email
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: context
id.token.claim: true
jsonType.label: String
user.attribute: oxContextIDNum
userinfo.token.claim: true
consentRequired: false
name: context
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- description: Scope for the claims required by openDesk's Matrix instance.
name: opendesk-matrix-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
id.token.claim: true
introspection.token.claim: true
userinfo.token.claim: true
consentRequired: false
name: full name
protocol: openid-connect
protocolMapper: oidc-full-name-mapper
- config:
access.token.claim: true
claim.name: email
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: email
userinfo.token.claim: true
consentRequired: false
name: email
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- description: Scope for the claims required by openDesk's XWiki instance.
name: opendesk-xwiki-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
id.token.claim: true
introspection.token.claim: true
userinfo.token.claim: true
consentRequired: false
name: full name
protocol: openid-connect
protocolMapper: oidc-full-name-mapper
- config:
access.token.claim: true
claim.name: email
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: email
userinfo.token.claim: true
consentRequired: false
name: email
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- description: Scope for the claims required by openDesk's Dovecot instance.
name: opendesk-dovecot-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- description: Scope for the claims required by openDesk's OX Appuite instance.
name: opendesk-oxappsuite-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: context
id.token.claim: true
jsonType.label: String
user.attribute: oxContextIDNum
userinfo.token.claim: true
consentRequired: false
name: context
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- description: Scope for the claims required by openDesk's Notes instance.
name: opendesk-notes-scope
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
claim.name: email
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: email
userinfo.token.claim: true
consentRequired: false
name: email
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: given_name
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: firstName
userinfo.token.claim: true
consentRequired: false
name: given name
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: family_name
id.token.claim: true
introspection.token.claim: true
jsonType.label: String
user.attribute: lastName
userinfo.token.claim: true
consentRequired: false
name: family name
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
clients:
- attributes:
backchannel.logout.revoke.offline.tokens: true
backchannel.logout.session.required: true
backchannel.logout.url: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/backchannel-logout
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-intercom
consentRequired: false
defaultClientScopes:
- offline_access
frontchannelLogout: false
name: opendesk-intercom
protocol: openid-connect
protocolMappers:
- config:
access.token.claim: true
id.token.claim: false
included.client.audience: opendesk-intercom
consentRequired: false
name: intercom-audience
protocol: openid-connect
protocolMapper: oidc-audience-mapper
- config:
access.token.claim: true
claim.name: opendesk_username
id.token.claim: true
jsonType.label: String
user.attribute: uid
userinfo.token.claim: true
consentRequired: false
name: opendesk_username
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
- config:
access.token.claim: true
claim.name: opendesk_useruuid
id.token.claim: true
jsonType.label: String
user.attribute: entryUUID
userinfo.token.claim: true
consentRequired: false
name: opendesk_useruuid
protocol: openid-connect
protocolMapper: oidc-usermodel-attribute-mapper
publicClient: false
redirectUris:
- https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/callback
secret: d42f6afee33e28f01222383c86e8741b98e14924
- alwaysDisplayInConsole: false
attributes:
backchannel.logout.revoke.offline.tokens: false
backchannel.logout.session.required: false
client.introspection.response.allow.jwt.claim.enabled: false
client.use.lightweight.access.token.enabled: false
client_credentials.use_refresh_token: false
display.on.consent.screen: false
oauth2.device.authorization.grant.enabled: false
oidc.ciba.grant.enabled: false
post.logout.redirect.uris: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
require.pushed.authorization.requests: false
tls.client.certificate.bound.access.tokens: false
token.response.type.bearer.lower-case: false
use.jwks.url: false
use.refresh.tokens: false
user.info.response.signature.alg: RS256
authorizationServicesEnabled: false
bearerOnly: false
clientAuthenticatorType: client-secret
clientId: opendesk-notes
consentRequired: false
defaultClientScopes:
- opendesk-notes-scope
directAccessGrantsEnabled: true
frontchannelLogout: false
implicitFlowEnabled: false
name: opendesk-notes
protocol: openid-connect
publicClient: false
redirectUris:
- https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/callback/
secret: 0cbc7a3257db722ed76270a547c7dccf1f84db87
serviceAccountsEnabled: false
standardFlowEnabled: true
surrogateAuthRequired: false
- attributes:
backchannel.logout.session.required: false
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-dovecot
consentRequired: false
defaultClientScopes:
- opendesk-dovecot-scope
frontchannelLogout: false
name: opendesk-dovecot
protocol: openid-connect
publicClient: false
secret: b4b4e59939b23669b1287c722376441b0bdcddfa
- attributes:
backchannel.logout.session.required: true
backchannel.logout.url: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ajax/oidc/backchannel_logout
post.logout.redirect.uris: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-oxappsuite
consentRequired: false
defaultClientScopes:
- opendesk-oxappsuite-scope
- read_contacts
- write_contacts
frontchannelLogout: false
name: opendesk-oxappsuite
protocol: openid-connect
publicClient: false
redirectUris:
- https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
- https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
secret: ba9c972d28385e400bc71a5869b8219ec42afb45
- attributes:
backchannel.logout.session.required: true
backchannel.logout.url: https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/_synapse/client/oidc/backchannel_logout
post.logout.redirect.uris: https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-matrix
consentRequired: false
defaultClientScopes:
- opendesk-matrix-scope
directAccessGrantsEnabled: true
frontchannelLogout: false
name: opendesk-matrix
protocol: openid-connect
publicClient: false
redirectUris:
- https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
- https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
- https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
secret: b4f6604310ebd2d06b5fc8832ae1095e43481b04
serviceAccountsEnabled: true
standardFlowEnabled: true
- attributes:
backchannel.logout.session.required: true
backchannel.logout.url: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/apps/user_oidc/backchannel-logout/opendesk
post.logout.redirect.uris: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-nextcloud
consentRequired: false
defaultClientScopes:
- opendesk-nextcloud-scope
- read_contacts
- write_contacts
frontchannelLogout: false
name: opendesk-nextcloud
protocol: openid-connect
publicClient: false
redirectUris:
- https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
- https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
secret: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8
- attributes:
backchannel.logout.session.required: true
backchannel.logout.url: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/auth/keycloak/backchannel-logout
post.logout.redirect.uris: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-openproject
consentRequired: false
defaultClientScopes:
- opendesk-openproject-scope
frontchannelLogout: false
name: opendesk-openproject
protocol: openid-connect
publicClient: false
redirectUris:
- https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
- https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
secret: 3621e456b58b341fe12689612e0ca7820974d274
serviceAccountsEnabled: true
- attributes:
backchannel.logout.session.required: false
backchannel.logout.url: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/oidc/authenticator/backchannel_logout
post.logout.redirect.uris: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
authorizationServicesEnabled: false
clientAuthenticatorType: client-secret
clientId: opendesk-xwiki
consentRequired: false
defaultClientScopes:
- opendesk-xwiki-scope
frontchannelLogout: false
name: opendesk-xwiki
protocol: openid-connect
publicClient: false
redirectUris:
- https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
- https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*
secret: af1243a89d9b55965b6395e3ab7cc6d004dbcdab
precreateGroups:
- Domain Admins
- Domain Users
- 2fa-users
- IAM API - Full Access
- managed-by-attribute-Fileshare
- managed-by-attribute-FileshareAdmin
- managed-by-attribute-Knowledgemanagement
- managed-by-attribute-KnowledgemanagementAdmin
- managed-by-attribute-Livecollaboration
- managed-by-attribute-LivecollaborationAdmin
- managed-by-attribute-Projectmanagement
- managed-by-attribute-ProjectmanagementAdmin
- managed-by-attribute-Groupware
- managed-by-attribute-Notes
realmSettings:
accessCodeLifespan: 60
accessCodeLifespanLogin: 1800
accessCodeLifespanUserAction: 300
accessTokenLifespan: 300
accessTokenLifespanForImplicitFlow: 900
actionTokenGeneratedByAdminLifespan: 43200
actionTokenGeneratedByUserLifespan: 300
clientOfflineSessionIdleTimeout: 0
clientOfflineSessionMaxLifespan: 0
clientSessionIdleTimeout: 0
clientSessionMaxLifespan: 0
oauth2DeviceCodeLifespan: 600
oauth2DevicePollingInterval: 5
offlineSessionIdleTimeout: 2592000
offlineSessionMaxLifespan: 5184000
offlineSessionMaxLifespanEnabled: false
refreshTokenMaxReuse: 0
rememberMe: true
revokeRefreshToken: false
ssoSessionIdleTimeout: 14400
ssoSessionIdleTimeoutRememberMe: 28800
ssoSessionMaxLifespan: 57600
ssoSessionMaxLifespanRememberMe: 1209600
ssoFederation:
enabled: false
enforceFederatedLogin: false
idpDetails: {}
name: My upstream IdP
twoFactorSettings:
additionalGroups:
- foo
roleName: 2FA role
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
enabled: true
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
extraEnvVars: []
extraVolumeMounts: []
extraVolumes: []
global:
domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
hosts:
adminBot: adminbot
collabora: office
cryptpad: pad
element: chat
intercomService: ics
jitsi: meet
keycloak: id
matrixNeoBoardWidget: matrix-neoboard-widget
matrixNeoChoiceWidget: matrix-neochoice-widget
matrixNeoDateFixBot: matrix-neodatefix-bot
matrixNeoDateFixWidget: matrix-neodatefix-widget
minioApi: objectstore
minioConsole: objectstore-ui
nextcloud: files
notes: notes
nubus: portal
openproject: projects
openxchange: webmail
portal: portal
static: static
synapse: matrix
synapseAdmin: synapse-admin
synapseFederation: matrix-federation
whiteboard: whiteboard
xwiki: wiki
imagePullSecrets: []
registry: registry.opencode.de
image:
imagePullPolicy: IfNotPresent
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap
tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7
imagePullSecrets: []
nodeSelector: {}
podAnnotations:
intents.otterize.com/service-name: ums-keycloak-bootstrap
podLabels: {}
podSecurityContext:
enabled: true
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
serviceAccount:
automountServiceAccountToken: false
create: true
labels: {}
terminationGracePeriodSeconds: ""
tolerations: []
topologySpreadConstraints: []
...
---
# Source: opendesk-keycloak-bootstrap/templates/secrect.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "opendesk-keycloak-bootstrap-admin-creds"
labels:
app.kubernetes.io/name: opendesk-keycloak-bootstrap
helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0
app.kubernetes.io/instance: opendesk-keycloak-bootstrap
app.kubernetes.io/managed-by: Helm
stringData:
admin.yaml: |
username: kcadmin
password: 81d3190e7a7467137ccb11c6fdd2c296986275db
...
---
# Source: opendesk-keycloak-bootstrap/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-keycloak-bootstrap-ansible"
labels:
app.kubernetes.io/name: opendesk-keycloak-bootstrap
helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0
app.kubernetes.io/instance: opendesk-keycloak-bootstrap
app.kubernetes.io/managed-by: Helm
data:
configure_client_access_restriction.yml: |
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Configuring client role/group based required scopes to restrict access based on group membership"
ansible.builtin.include_tasks: "configure_client_access_restriction_loop.yml"
loop: "{{ client_access_restriction_details.values() }}"
loop_control:
loop_var: "client_access_config"
...
configure_client_access_restriction_loop.yml: |
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
#
# create client role
# 1. get client_uuid
# 2. POST https://keycloak/admin/realms/opendesk/clients//roles
#
- name: "Fetch client info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "clientqueryresult"
- name: "Set fact for client_uuid of {{ client_access_config.client }}"
ansible.builtin.set_fact:
client_uuid: "{{ clientqueryresult['json'] | json_query('[?clientId==`'+client_access_config.client+'`].id') | first }}"
- name: "Create client role"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ client_uuid }}/roles"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body: |
{
"name":"{{ client_access_config.role }}",
"description":"",
"attributes":{}
}
status_code: [201, 409]
#
# create client role <> scope mapping
# 1. get clientscope_uuid
# 2. get clientrole_uuid
# 3. POST https://keycloak/admin/realms/opendesk/client-scopes//scope-mappings/clients/
# [{"id":"","name":"","description":""}]
#
- name: "Fetch clientscope info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/client-scopes"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "clientscopequeryresult"
- name: "Set fact for clientscope_uuid of {{ client_access_config.scope }}"
ansible.builtin.set_fact:
clientscope_uuid: "{{ clientscopequeryresult['json'] | json_query('[?name==`'+client_access_config.scope+'`].id') | first }}"
- name: "Fetch clientroles info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ client_uuid }}/roles"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "clientrolesqueryresult"
- name: "Set fact for clientrole_uuid of {{ client_access_config.role }}"
ansible.builtin.set_fact:
clientrole_uuid: "{{ clientrolesqueryresult['json'] | json_query('[?name==`'+client_access_config.role+'`].id') | first }}"
- name: "Create client role <> scope mapping"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/client-scopes/{{ clientscope_uuid }}/scope-mappings/clients/{{ client_uuid }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body: |
[
{
"id":"{{ clientrole_uuid }}",
"name":"{{ client_access_config.role }}",
"description":""
}
]
status_code: [204, 409]
#
# map client role to (ldap) group
# 1. create group or accept if it already exists (as we cannot force Keycloak to just get the groups from LDAP without users being sync'd)
# 2. get group_uuid
# 3. POST https://keycloak/admin/realms/opendesk/groups/9357d539-a2a3-48db-8345-e689a7bc2cda/role-mappings/clients/8432f49d-d820-4419-960d-b496dfbdc76c
# [{"id":"6bc7c56f-739f-415d-98e8-6222f7ffb5d3","name":"opendesk-matrix-access-control","description":""}]
#
- name: "Create group {{ client_access_config.group }} (accept if it already exists)"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
body_format: "json"
method: "POST"
body: |
{ "name": "{{ client_access_config.group }}" }
status_code: [201, 409]
- name: "Fetch groups info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "groupsqueryresult"
- name: "Set fact for group_uuid of group {{ client_access_config.group }}"
ansible.builtin.set_fact:
group_uuid: "{{ groupsqueryresult['json'] | json_query('[?name==`'+client_access_config.group+'`].id') | first }}"
- name: "Map client role {{ client_access_config.role }} to group {{ client_access_config.group }}"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups/{{ group_uuid }}/role-mappings/clients/{{ client_uuid }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body: |
[
{
"id":"{{ clientrole_uuid }}",
"name":"{{ client_access_config.role }}",
"description":""
}
]
status_code: [204, 409]
...
configure_clientpermissions.yml: |
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
- name: "Ensure IntercomService is up and running with retries."
ansible.builtin.uri:
url: "{{ global_intercom_url }}"
method: "GET"
register: "ics_alive_response"
until: "ics_alive_response.status == 200"
retries: 60
delay: 10
- name: "Fetch client info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "clientqueryresult"
- name: "Extract client IDs and add to list"
ansible.builtin.set_fact:
client_ids: "{{ global_cfgobj.config.opendesk.clients | map(attribute='clientId') | list }}"
- name: "Looping now"
ansible.builtin.include_tasks: "configure_clientpermissions_enable_loop.yml"
loop: "{{ client_ids }}"
loop_control:
loop_var: "client_id"
- name: "Set KC internal client ID for realm_management"
ansible.builtin.set_fact:
kcint_clientid_realmmanagement: "{{ clientqueryresult['json'] | json_query('[?clientId==`realm-management`].id')
| first }}"
- name: "Add intercom policy to management client"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/policy"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
body_format: "json"
method: "POST"
body: |
{
"name": "opendesk-intercom",
"type": "client",
"logic": "POSITIVE",
"decisionStrategy": "UNANIMOUS",
"config": {
"clients": "[\"opendesk-intercom\"]"
}
}
status_code: [201, 409]
- name: "Fetch policy info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/policy"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "policyqueryresult"
- name: "set intercom_policy_id"
ansible.builtin.set_fact:
intercom_policy_id: "{{ policyqueryresult['json'] | json_query('[?name==`opendesk-intercom`].id') | first }}"
# We also set the intercom client on create, but when re-creating clients the assignment to the policy gets lost and
# just assigning the client on create does not add the client when the policy already exists.
- name: "Update the intercom policy to be sure it includes the intercom client"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/policy/{{ intercom_policy_id }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
body_format: "json"
method: "PUT"
body: |
{
"name": "opendesk-intercom",
"type": "client",
"logic": "POSITIVE",
"decisionStrategy": "UNANIMOUS",
"config": {
"clients": "[\"opendesk-intercom\"]"
}
}
status_code: [201, 409]
- name: "Fetch scope info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/scope"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "scopequeryresult"
- name: "set tokenexchange_scope_id"
ansible.builtin.set_fact:
tokenexchange_scope_id: "{{ scopequeryresult['json'] | json_query('[?name==`token-exchange`].id') | first }}"
- name: "Fetch permission scope info"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/permission/scope"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "permissionscopequeryresult"
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
- name: "Will loop over"
ansible.builtin.debug:
# cannot use json_query's start with due to https://github.com/ansible/ansible/issues/27299
msg: "{{ permissionscopequeryresult['json'] | selectattr('name', 'contains', 'token-exchange.permission.client.')
| list | json_query('[*].name') }}"
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
- name: "Looping now"
ansible.builtin.include_tasks: "configure_clientpermissions_configure_loop.yml"
loop: "{{ permissionscopequeryresult['json'] | selectattr('name', 'contains', 'token-exchange.permission.client.')
| list | json_query('[*].name') }}"
loop_control:
loop_var: "loop_client_string"
...
configure_clientpermissions_configure_loop.yml: |
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
- name: "get loop_client_id from loop_client_string"
ansible.builtin.set_fact:
loop_client_id: "{{ loop_client_string.split('.')[-1] }}"
- name: "Get tokenExchange_permission_scope_id_for_loop_client"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/permission/scope"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "result"
- name: "Set tokenExchange_permission_scope_id_for_loop_client"
ansible.builtin.set_fact:
tokenExchange_permission_scope_id_for_loop_client: "{{ result['json'] |
json_query('[?name==`token-exchange.permission.client.'+loop_client_id+'`].id') | first }}"
- name: "Get resource_id_for_loop_client"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/resource"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "result"
- name: "Set resource_id_for_loop_client"
ansible.builtin.set_fact:
resource_id_for_loop_client: "{{ result['json'] | json_query('[?name==`client.resource.'+loop_client_id+'`]._id')
| first }}"
- name: "Set body for request"
ansible.builtin.set_fact:
request_body: |
{
"name":"token-exchange.permission.client.{{ loop_client_id }}",
"type":"scope",
"logic":"POSITIVE",
"decisionStrategy":"UNANIMOUS",
"resources":[
"{{ resource_id_for_loop_client }}"
],
"scopes":[
"{{ tokenexchange_scope_id }}"
],
"policies":[
"{{ intercom_policy_id }}"
]
}
- name: "set the policy (realm_management > authorization > permissions > token-xchange.permission.client."
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid_realmmanagement }}\
/authz/resource-server/permission/scope/{{ tokenExchange_permission_scope_id_for_loop_client }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: "{{ request_body }}"
status_code: [200, 201]
...
configure_clientpermissions_enable_loop.yml: |
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Set KC internal clientid for {{ client_id }}"
ansible.builtin.set_fact:
kcint_clientid: "{{ clientqueryresult['json'] | json_query('[?clientId==`' + client_id + '`].id')
| first }}"
- name: "Enable permissions for {{ client_id }} / {{ kcint_clientid }}"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid }}\
/management/permissions"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
body_format: "json"
method: "PUT"
body: "{ \"enabled\": true }"
status_code: [200]
...
configure_create_groups.yml: |
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Creating groups in loop"
ansible.builtin.include_tasks: "configure_create_groups_loop.yml"
loop: "{{ precreate_groups }}"
loop_control:
loop_var: "loop_group_name"
...
configure_create_groups_loop.yml: |
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Create group {{ loop_group_name }} (and accept if it already exists)"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
body_format: "json"
method: "POST"
body: |
{ "name": "{{ loop_group_name }}" }
status_code: [201, 409]
configure_realmsettings.yml: |
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
- name: "Configure session timeouts and lifespans"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: |
{
"accessTokenLifespan": {{ global_cfgobj.config.realmSettings.accessTokenLifespan }},
"ssoSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.ssoSessionIdleTimeout }},
"ssoSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.ssoSessionMaxLifespan }},
"accessTokenLifespanForImplicitFlow": {{ global_cfgobj.config.realmSettings.accessTokenLifespanForImplicitFlow }},
"offlineSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.offlineSessionIdleTimeout }},
"offlineSessionMaxLifespanEnabled": {{ global_cfgobj.config.realmSettings.offlineSessionMaxLifespanEnabled }},
"offlineSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.offlineSessionMaxLifespan }},
"clientSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.clientSessionIdleTimeout }},
"clientSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.clientSessionMaxLifespan }},
"clientOfflineSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.clientOfflineSessionIdleTimeout }},
"clientOfflineSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.clientOfflineSessionMaxLifespan }},
"accessCodeLifespan": {{ global_cfgobj.config.realmSettings.accessCodeLifespan }},
"accessCodeLifespanUserAction": {{ global_cfgobj.config.realmSettings.accessCodeLifespanUserAction }},
"accessCodeLifespanLogin": {{ global_cfgobj.config.realmSettings.accessCodeLifespanLogin }},
"actionTokenGeneratedByAdminLifespan": {{ global_cfgobj.config.realmSettings.actionTokenGeneratedByAdminLifespan }},
"actionTokenGeneratedByUserLifespan": {{ global_cfgobj.config.realmSettings.actionTokenGeneratedByUserLifespan }},
"oauth2DeviceCodeLifespan": {{ global_cfgobj.config.realmSettings.oauth2DeviceCodeLifespan }},
"oauth2DevicePollingInterval": {{ global_cfgobj.config.realmSettings.oauth2DevicePollingInterval }},
"revokeRefreshToken": {{ global_cfgobj.config.realmSettings.revokeRefreshToken }},
"refreshTokenMaxReuse": {{ global_cfgobj.config.realmSettings.refreshTokenMaxReuse }}
}
status_code: [204]
- name: "Configure rememberMe options"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: |
{
"rememberMe": {{ global_cfgobj.config.realmSettings.rememberMe }},
"ssoSessionIdleTimeoutRememberMe":
{{ global_cfgobj.config.realmSettings.ssoSessionIdleTimeoutRememberMe }},
"ssoSessionMaxLifespanRememberMe":
{{ global_cfgobj.config.realmSettings.ssoSessionMaxLifespanRememberMe }}
}
status_code: [204]
- name: "Enable login with email"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: |
{
"loginWithEmailAllowed": true,
"duplicateEmailsAllowed": false
}
status_code: [204]
- name: "Enable 'save events' required for Keycloak Extensions Brute Force Protection"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: |
{
"eventsEnabled": true
}
status_code: [204]
- name: "Explicitly set HTTP headers"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: |
{
"browserSecurityHeaders": {
"contentSecurityPolicyReportOnly": "",
"xContentTypeOptions": "nosniff",
"referrerPolicy": "no-referrer",
"xRobotsTag": "noindex",
"xFrameOptions": "SAMEORIGIN",
"contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self' {{ global_portal_url }} ; object-src 'none';",
"xXSSProtection": "1; mode=block",
"strictTransportSecurity": "max-age=31536000; includeSubDomains"
}
}
status_code: [204]
...
configure_set_2fa_groups.yml: |
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Get 2FA role"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/roles"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "rolesqueryresult"
- name: "Set role id for 2FA role"
ansible.builtin.set_fact:
two_factor_role_id: "{{ rolesqueryresult['json'] | json_query('[?name==`'+two_factor_role_name+'`].id') | first }}"
- name: "Creating 2FA groups in loop"
ansible.builtin.include_tasks: "configure_create_groups_loop.yml"
loop: "{{ two_factor_additional_groups }}"
loop_control:
loop_var: "loop_group_name"
- name: "Adding mapping groups to 2FA role in loop"
ansible.builtin.include_tasks: "configure_set_2fa_groups_loop.yml"
loop: "{{ two_factor_additional_groups }}"
loop_control:
loop_var: "loop_group_name"
...
configure_set_2fa_groups_loop.yml: |
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Get groups"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "groupsqueryresult"
- name: "Set group id for group {{ loop_group_name }} that should be 2FA enabled"
ansible.builtin.set_fact:
loop_group_id: "{{ groupsqueryresult['json'] | json_query('[?name==`'+loop_group_name+'`].id') | first }}"
- name: "Add mapping for group {{ loop_group_name }} / {{ loop_group_id }} to 2FA role {{ two_factor_role_name }} / {{ two_factor_role_id }}"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups/{{ loop_group_id }}/role-mappings/realm"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
body_format: "json"
method: "POST"
body: |
[
{
"id": "{{ two_factor_role_id }}",
"containerId": "{{ global_opendesk_realm }}",
"clientRole": false,
"composite": false,
"name": "{{ two_factor_role_name }}"
}
]
status_code: [204, 409]
...
configure_sso_federation.yml: |+
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
# We always create the flow, even if SSO federation is not active, as we do not reference it
# anywhere else, it does not hurt.
- name: "Create 'sso-federation-flow' object"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body:
alias: "sso-federation-flow"
description: "openDesk authentication flow for SSO federation"
providerId: "basic-flow"
topLevel: true
builtIn: false
status_code: [201,409]
register: "create_flow_response"
- name: "Configuring 'sso-federation-flow': Setting exeuction steps to 'REQUIRED'"
when: "create_flow_response.status == 201"
ansible.builtin.include_tasks: "configure_sso_federation_authexecution.yml"
- name: "Creating upstream IdP object"
ansible.builtin.include_tasks: "configure_sso_federation_upstreamidp.yml"
- name: "Handle upstream SSO enforcement option"
ansible.builtin.include_tasks: "configure_sso_federation_handleenforcement.yml"
...
configure_sso_federation_authexecution.yml: |
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Add execution step 'detect-existing-broker-user' to 'sso-federation-flow'"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions/execution"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body:
provider: "idp-detect-existing-broker-user"
status_code: [201]
- name: "Add execution step 'set-existing-user-authenticated' to 'sso-federation-flow'"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions/execution"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body:
provider: "idp-auto-link"
status_code: [201]
- name: "Get details the previously added execution steps"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "executions_list"
- name: "Verify there are just two executions (otherwise somebody manually tampered with it or the bootstrapping is buggy)."
assert:
that:
- "executions_list.json | length == 2"
fail_msg: "Found more than two executions in 'sso-federation-flow'."
- name: "Setting execution steps to 'REQUIRED'"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body:
id: "{{ item.id }}"
requirement: "REQUIRED"
description: "openDesk authentication flow for SSO federation"
status_code: [204]
loop: "{{ executions_list.json }}"
...
configure_sso_federation_handleenforcement.yml: |
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Get details for '2fa-browser' execution steps"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/2fa-browser/executions"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "GET"
status_code: [200]
register: "executions_list"
- name: "Get the ID of the element that has 'providerId' set to 'identity-provider-redirector'"
set_fact:
redirector_execution_id: >-
{{ executions_list.json
| selectattr('providerId', 'defined')
| selectattr('providerId', 'equalto', 'identity-provider-redirector')
| map(attribute='id')
| list
| first }}
- name: "Enforcing SSO federated login"
when: "global_cfgobj.config.ssoFederation.enabled and global_cfgobj.config.ssoFederation.enforceFederatedLogin"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/executions/{{ redirector_execution_id }}/config"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body:
alias: sso-federation-idp
config:
defaultProvider: sso-federation-idp
status_code: [201]
- name: "Get the ID of a possible configuration of of the element where 'providerId' is 'identity-provider-redirector'"
when: >-
executions_list.json
| selectattr('providerId', 'defined')
| selectattr('providerId', 'equalto', 'identity-provider-redirector')
| selectattr('authenticationConfig', 'defined')
| list | length > 0
set_fact:
redirector_execution_authentication_config_id: >-
{{ executions_list.json
| selectattr('providerId', 'defined')
| selectattr('providerId', 'equalto', 'identity-provider-redirector')
| map(attribute='authenticationConfig')
| list
| first }}
- name: "Delete the authentication config that enforces the SSO federated login"
when: >-
(
not global_cfgobj.config.ssoFederation.enforceFederatedLogin
or not global_cfgobj.config.ssoFederation.enabled
)
and redirector_execution_authentication_config_id is defined
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/config/{{ redirector_execution_authentication_config_id }}"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "DELETE"
status_code: [204]
...
configure_sso_federation_upstreamidp.yml: |
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
- name: "Merge explicit values into IdP config"
when: "global_cfgobj.config.ssoFederation.enabled"
set_fact:
upstream_idp_config: >-
{{
global_cfgobj.config.ssoFederation.idpDetails
| combine({ 'displayName': global_cfgobj.config.ssoFederation.name }, recursive=True)
| combine({ 'alias': 'sso-federation-idp' }, recursive=True)
| combine({ 'firstBrokerLoginFlowAlias': 'sso-federation-flow' }, recursive=True)
}}
- name: "Create 'sso-federation-idp' object"
when: "global_cfgobj.config.ssoFederation.enabled"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "POST"
body_format: "json"
body: "{{ upstream_idp_config }}"
status_code: [201,409]
register: "create_idp_response"
- name: "Update IdP in case it already exists"
when: "global_cfgobj.config.ssoFederation.enabled and create_idp_response.status == 409"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances/sso-federation-idp"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "PUT"
body_format: "json"
body: "{{ upstream_idp_config }}"
status_code: [204]
- name: "Delete IdP (but do not fail if it fails, as it might not even exist)"
when: "not global_cfgobj.config.ssoFederation.enabled"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances/sso-federation-idp"
headers:
Accept: "application/json"
Authorization: "Bearer {{ global_accesstoken }}"
method: "DELETE"
status_code: [204,404]
...
main.yml: |
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
- hosts: "localhost"
tasks:
- ansible.builtin.include_tasks: "./set_global_facts.yml"
- name: "Debug output"
ansible.builtin.debug:
var: "global_cfgobj"
when: "global_cfgobj.config.debug.enabled|bool"
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
- ansible.builtin.include_tasks: "./configure_realmsettings.yml"
# In the following case we request the access token on every loop, not upfront,
# so no need to request it here in the `main.yml`
- ansible.builtin.include_tasks: "./configure_client_access_restriction.yml"
# To get the access token the Keycloak must be up and running,
# we do some loops in order to wait for the service in
# `set_global_accesstoken.yml`
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
- ansible.builtin.include_tasks: "./configure_sso_federation.yml"
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
- ansible.builtin.include_tasks: "./configure_set_2fa_groups.yml"
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
- ansible.builtin.include_tasks: "./configure_create_groups.yml"
- ansible.builtin.include_tasks: "./set_global_accesstoken.yml"
# To configure the client permissions we require the Intercom Service
# deployment to be completed as it creates the related OIDC client
# that is required for the client permission setup.
- ansible.builtin.include_tasks: "./configure_clientpermissions.yml"
...
set_global_accesstoken.yml: |
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
- name: "get authentication token"
ansible.builtin.uri:
url: "{{ global_keycloak_url }}/realms/master/protocol/openid-connect/token"
method: "POST"
body_format: "form-urlencoded"
body:
client_id: "admin-cli"
username: "{{ global_admin_username }}"
password: "{{ global_admin_password }}"
grant_type: "password"
register: "access_token_response"
# Keycloak is required to be up and running, so we allow some retries
until: "access_token_response.status == 200"
retries: 30
delay: 10
- name: "Set fact global_accesstoken"
ansible.builtin.set_fact:
global_accesstoken: "{{ access_token_response['json']['access_token'] }}"
...
set_global_facts.yml: |
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
- name: "Global: Read and parse config.yaml"
ansible.builtin.set_fact:
global_cfgobj: "{{ lookup('file', '/app/values.yaml') | from_yaml }}"
global_admin: "{{ lookup ('file', '/app/admin.yaml') | from_yaml }}"
- name: "Global: Set variables"
ansible.builtin.set_fact:
global_admin_username: "{{ global_admin.username }}"
global_admin_password: "{{ global_admin.password }}"
global_keycloak_host: "{{ global_cfgobj.global.hosts.keycloak }}.{{ global_cfgobj.global.domain }}"
global_portal_url: "https://{{ global_cfgobj.global.hosts.portal }}.{{ global_cfgobj.global.domain }}"
global_intercom_url: "https://{{ global_cfgobj.global.hosts.intercomService }}.{{ global_cfgobj.global.domain }}"
global_opendesk_realm: "{{ global_cfgobj.config.keycloak.realm }}"
precreate_groups: "{{ global_cfgobj.config.precreateGroups | default([]) }}"
two_factor_role_name: "{{ global_cfgobj.config.twoFactorSettings.roleName }}"
two_factor_additional_groups: "{{ global_cfgobj.config.twoFactorSettings.additionalGroups | default([]) }}"
client_access_restriction_details: "{{ global_cfgobj.config.clientAccessRestrictions | default({}) }}"
- name: "Global: Set Keycloak URL for external connection"
ansible.builtin.set_fact:
global_keycloak_url: "https://{{ global_keycloak_host }}"
when: "not global_cfgobj.config.keycloak.intraCluster.enabled"
- name: "Global: Set Keycloak URL for internal connection"
ansible.builtin.set_fact:
global_keycloak_url: "{{ global_cfgobj.config.keycloak.intraCluster.internalBaseUrl }}"
when: "global_cfgobj.config.keycloak.intraCluster.enabled"
...
...
---
# Source: opendesk-keycloak-bootstrap/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-keycloak-bootstrap-bootstrap-1"
labels:
app.kubernetes.io/name: opendesk-keycloak-bootstrap
helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0
app.kubernetes.io/instance: opendesk-keycloak-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
annotations:
checksum/configmap: b2372a40503669fd5a20e3ac665ac30a1a578e34e7956cb489d20eb0d8684cd3
intents.otterize.com/service-name: ums-keycloak-bootstrap
labels:
app.kubernetes.io/name: opendesk-keycloak-bootstrap
helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0
app.kubernetes.io/instance: opendesk-keycloak-bootstrap
app.kubernetes.io/managed-by: Helm
spec:
restartPolicy: "Never"
securityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: opendesk-keycloak-bootstrap
containers:
- name: "opendesk-keycloak-bootstrap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap:1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7"
imagePullPolicy: IfNotPresent
command:
- "/app/entrypoint.sh"
volumeMounts:
- mountPath: "/app/values.yaml"
name: "secrets-volume"
subPath: "values.yaml"
- mountPath: "/app/admin.yaml"
name: "admin-creds"
subPath: "admin.yaml"
- mountPath: "/app/ansible"
name: "ansible-directory-volume"
- mountPath: "/tmp"
name: "temp-dir"
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
env:
- name: "OPENDESK_KEYCLOAK_BOOTSTRAP_TEMP_DIR"
value: "/tmp"
- name: "OPENDESK_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START"
value: "0"
volumes:
- name: "secrets-volume"
secret:
secretName: "opendesk-keycloak-bootstrap"
- name: "admin-creds"
secret:
secretName: "opendesk-keycloak-bootstrap-admin-creds"
- name: "temp-dir"
emptyDir:
sizeLimit: "20Mi"
- name: "ansible-directory-volume"
configMap:
name: "opendesk-keycloak-bootstrap-ansible"
...
---
# Source: dovecot/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "dovecot"
labels:
app.kubernetes.io/name: dovecot
helm.sh/chart: dovecot-2.0.0
app.kubernetes.io/instance: dovecot
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
...
---
# Source: dovecot/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "dovecot"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: dovecot
helm.sh/chart: dovecot-2.0.0
app.kubernetes.io/instance: dovecot
app.kubernetes.io/managed-by: Helm
stringData:
password: "2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9"
migrationMasterPassword: "1748a0b8a43268f79f9b5a1d27be603ca563702c"
ldapPassword: "40290e376095d33c0c650723efa007abec1ee3fd"
oidcClientID: "opendesk-dovecot"
oidcClientSecret: "b4b4e59939b23669b1287c722376441b0bdcddfa"
...
---
# Source: dovecot/templates/configmap-virtual.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "dovecot-virtual"
labels:
app.kubernetes.io/name: dovecot
helm.sh/chart: dovecot-2.0.0
app.kubernetes.io/instance: dovecot
app.kubernetes.io/managed-by: Helm
data:
dovecot-virtual: |
*
-INBOX/Trash
-INBOX/Trash/*
-INBOX/Spam
-INBOX/Spam/*
...
---
# Source: dovecot/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "dovecot"
labels:
app.kubernetes.io/name: dovecot
helm.sh/chart: dovecot-2.0.0
app.kubernetes.io/instance: dovecot
app.kubernetes.io/managed-by: Helm
data:
dovecot.conf: |
auth_master_user_separator = *
auth_mechanisms = xoauth2 oauthbearer plain login
auth_realms = souvap
auth_verbose = no
first_valid_uid = 1000
listen = *
mail_location = mdbox:~/mdbox
mail_plugins = acl notify push_notification welcome zlib quota virtual
mail_uid=vmail
mail_gid=vmail
login_trusted_networks = 10.0.0.0/8
doveadm_password = ${DC_PASSWORD}
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext
mbox_write_locks = fcntl
recipient_delimiter = +
# Search inside attachments
# https://documentation.open-xchange.com/latest/middleware/mail/dovecot/attachment_marker.html
# https://doc.dovecot.org/settings/core/#core_setting-mail_attachment_detection_options
mail_attachment_detection_options = add-flags
# Submission settings
submission_ssl = "no"
submission_host = "postfix.yschmidt-opendesk-argo.svc.cluster.local:25"
namespace { # FIXME namespaces auslagern?
list = children
location = mdbox:%%h/mdbox:INDEXPVT=%h/shared/%%u
prefix = Freigaben/%%n/
separator = /
subscriptions = yes
type = shared
}
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
# Primary accounts with OAuth2
passdb {
driver = oauth2
args = /etc/dovecot/oauth2-primary.conf.ext
mechanisms = xoauth2 oauthbearer
# Primary accounts from OX have at least one @ in the login name
username_filter = *@*
# If successful, do not bother with secondary accounts
result_success = return-ok
result_failure = return-fail
result_internalfail = return-fail
}
# Primary accounts with password use LDAP auth bind
passdb {
driver = ldap
args = /etc/dovecot/ldap-primary.conf.ext
mechanisms = plain login
# Primary accounts from external clients have at most one @ in the login name
username_filter = !*@*@*
# If successful, do not bother with secondary accounts
result_success = return-ok
result_failure = return-fail
result_internalfail = return-fail
}
# OAuth2 authentication
# Step 1: authenticate and extract user's UUID from the token
passdb {
driver = oauth2
args = /etc/dovecot/oauth2-secondary.conf.ext
mechanisms = xoauth2 oauthbearer
# If authentication successful, continue with fetching user's DN
result_success = continue-ok
result_failure = return-fail
result_internalfail = return-fail
}
# Step 2: Retrieve user's DN
passdb {
driver = ldap
args = /etc/dovecot/ldap-userdn.conf.ext
mechanisms = xoauth2 oauthbearer
# If DN was found, continue with authorization
result_success = continue-ok
result_failure = return-fail
result_internalfail = return-fail
}
# Password authentication via LDAP auth bind
passdb {
driver = ldap
args = /etc/dovecot/ldap-secondary.conf.ext
mechanisms = plain login
# If authentication successful, continue with authorization
result_success = continue-ok
result_failure = return-fail
result_internalfail = return-fail
}
# Authorization for secondary accounts via LDAP
passdb {
driver = ldap
args = /etc/dovecot/ldap-authz.conf.ext
# After authorization we're done
result_success = return-ok
result_failure = return-fail
result_internalfail = return-fail
}
# Fixme: Enabled but commented files don't exist on ox-gwb
plugin {
acl = vfile
# acl_shared_dict = file:/data/usr/local/dovecot/db/shared-mailboxes.db
sieve_before = /etc/dovecot/global-spam-script.sieve
# sieve_default = /data/usr/local/dovecot/sieve/default_scripts
# welcome_script = welcome %u
}
protocols = imap pop3 lmtp sieve
service auth {
inet_listener {
port = 3659
}
unix_listener auth-userdb {
group = vmail
mode = 0666
user = vmail
}
}
service doveadm {
inet_listener {
port = 9000
}
inet_listener http {
port = 8080
}
}
service stats {
inet_listener http {
port = 9900
}
}
service imap-login {
process_limit = 300
inet_listener imap {
port = 143
}
}
service lmtp {
inet_listener lmtp {
port = 24
}
}
# Fixme: script does not exist on ox-gwb
service welcome {
executable = script /etc/devecot/welcome.sh
unix_listener welcome {
user = vmail
}
user = vmail
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
# SSL / TLS
ssl=yes
disable_plaintext_auth = no
ssl_cert= "/etc/dovecot/dovecot.conf"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/global-spam-script.sieve" > "/etc/dovecot/global-spam-script.sieve"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-authz.conf.ext" > "/etc/dovecot/ldap-authz.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-primary.conf.ext" > "/etc/dovecot/ldap-primary.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-secondary.conf.ext" > "/etc/dovecot/ldap-secondary.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-userdn.conf.ext" > "/etc/dovecot/ldap-userdn.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/migration-masterpsw.conf.ext" > "/etc/dovecot/migration-masterpsw.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/oauth2-primary.conf.ext" > "/etc/dovecot/oauth2-primary.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/oauth2-secondary.conf.ext" > "/etc/dovecot/oauth2-secondary.conf.ext"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/quota-warning.sh" > "/etc/dovecot/quota-warning.sh"
envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/welcome.sh" > "/etc/dovecot/welcome.sh"
chmod a+x /etc/dovecot/*.sh
env:
- name: "DC_PASSWORD"
valueFrom:
secretKeyRef:
name: "dovecot"
key: password
- name: "DC_MIGRATION_MASTER_PASSWORD"
valueFrom:
secretKeyRef:
name: "dovecot"
key: migrationMasterPassword
- name: "DC_LDAP_PASSWORD"
valueFrom:
secretKeyRef:
name: "dovecot"
key: ldapPassword
- name: "DC_OIDC_CLIENT_ID"
valueFrom:
secretKeyRef:
name: "dovecot"
key: oidcClientID
- name: "DC_OIDC_CLIENT_SECRET"
valueFrom:
secretKeyRef:
name: "dovecot"
key: oidcClientSecret
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "config-template"
mountPath: "/etc/dovecot.template"
- name: "config"
mountPath: "/etc/dovecot"
containers:
- name: dovecot
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- CHOWN
- DAC_OVERRIDE
- KILL
- NET_BIND_SERVICE
- SETGID
- SETUID
- SYS_CHROOT
drop:
- ALL
readOnlyRootFilesystem: true
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector:2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc"
imagePullPolicy: IfNotPresent
env:
ports:
- name: auth
containerPort: 3659
protocol:
- name: doveadm
containerPort: 9000
protocol:
- name: doveadm2
containerPort: 9200
protocol:
- name: doveadmhttp
containerPort: 8080
protocol:
- name: imap
containerPort: 143
protocol:
- name: imaps
containerPort: 993
protocol:
- name: lmpt
containerPort: 24
protocol:
- name: managasieve
containerPort: 4190
protocol:
- name: openmetrics
containerPort: 9900
protocol:
- name: pop3
containerPort: 110
protocol:
- name: pop3s
containerPort: 995
protocol:
livenessProbe:
tcpSocket:
port: "imap"
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
tcpSocket:
port: "imap"
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "config"
mountPath: "/etc/dovecot"
- name: "config-virtual-volume"
mountPath: "/etc/dovecot/virtual/All"
- name: "tls-volume"
mountPath: "/etc/tls"
- name: "srv-mail"
mountPath: "/srv/mail"
- name: "run-dovecot"
mountPath: "/run/dovecot"
- name: "var-lib-dovecot"
mountPath: "/var/lib/dovecot"
...
---
# Source: postfix/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: postfix-ox
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
...
---
# Source: postfix/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "postfix-ox"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
stringData:
username: ""
password: ""
...
---
# Source: postfix/templates/configmap-overrides.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postfix-ox-overrides"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
data:
sasl_passwd.map: |
:
...
---
# Source: postfix/templates/configmap-scripts.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postfix-ox-scripts"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
data:
init-postfix.sh: |
#!/bin/bash
function initPostfix {
cp /etc/postfix/master.cf.template /etc/postfix/master.cf
cp /etc/postfix/main.cf.template /etc/postfix/main.cf
chmod g-w,o-w /etc/postfix /etc/postfix-copy /var/spool/postfix /var/lib/postfix
chown postfix /var/lib/postfix
if [ -f /overrides/postfix.cf ]; then
while read line; do
[[ -n "${line}" && "${line}" != [[:blank:]#]* ]] && postconf -e "${line}"
done < /overrides/postfix.cf
echo "Loaded '/overrides/postfix.cf'"
else
echo "No extra postfix settings loaded because optional '/overrides/postfix.cf' not provided."
fi
# Include table-map files
if ls -A /overrides/*.map 1> /dev/null 2>&1; then
cp /overrides/*.map /etc/postfix/
postmap /etc/postfix/*.map
rm /etc/postfix/*.map
chown root:root /etc/postfix/*.lmdb
chmod 0600 /etc/postfix/*.lmdb
echo "Loaded 'map files'"
else
echo "No extra map files loaded because optional '/overrides/*.map' not provided."
fi
cp -a /etc/postfix/* /etc/postfix-copy/
echo "Init done"
}
initPostfix >> /proc/1/fd/1
start-postfix.sh: |
#!/bin/bash
function startPostfix {
/usr/sbin/postfix start-fg
}
startPostfix &>> /proc/1/fd/1
namespace-watcher.sh: |
#!/bin/bash
DELAY=${DELAY:-10}
DOMAIN=${DOMAIN:-"develop.souvap-univention.de"}
INTERNAL_DOMAIN=${INTERNAL_DOMAIN:-"svc.cluster.local"}
KUBECTL_BIN="/usr/bin/env kubectl"
MAILSERVER=${MAILSERVER:-"dovecot"}
MAILSERVER_PORT=${MAILSERVER_PORT:-"24"}
MAILSERVER_PROTOCOL=${MAILSERVER_PROTOCOL:-"lmtps"}
NAMESPACE=${NAMESPACE:-"default"}
SERVICE_NAME=${SERVICE_NAME:-"dovecot"}
TRANSPORT_MAP=${TRANSPORT_MAP:-"/etc/postfix/transport.map"}
VIRTUAL_MAILBOX_DOMAINS=${VIRTUAL_MAILBOX_DOMAINS:-"/etc/postfix/virtual_mailbox_domains.txt"}
WORKDIR=${WORKDIR:-"/namespace-watcher"}
touch "${WORKDIR}/virtual_mailbox_domains.txt"
touch "${WORKDIR}/transport.map"
update-postfix() {
echo "updating Postfix ..."
cp "${WORKDIR}/virtual_mailbox_domains.txt.tmp" "${WORKDIR}/virtual_mailbox_domains.txt"
cp "${WORKDIR}/transport.map.tmp" "${WORKDIR}/transport.map"
${KUBECTL_BIN} exec -n "${NAMESPACE}" ${HOSTNAME} -c postfix -- bash -c "cp \"${WORKDIR}/transport.map\" \"${TRANSPORT_MAP}\"; cp \"${WORKDIR}/virtual_mailbox_domains.txt\" \"${VIRTUAL_MAILBOX_DOMAINS}\"; postmap \"${TRANSPORT_MAP}\"; postfix reload"
}
while true; do
# Get all namespaces containting a service called dovecot
namespaces=( $( ${KUBECTL_BIN} get -A service -o jsonpath="{.items[?(@.metadata.name==\"${SERVICE_NAME}\")].metadata.namespace}" ) )
rm -f "${WORKDIR}/virtual_mailbox_domains.txt.tmp"
rm -f "${WORKDIR}/transport.map.tmp"
for ns in $(printf "%q\n" "${namespaces[@]}" | sort -u); do
# Get all mail domains from annotation
IFS=',' read -r -a domains <<< $( ${KUBECTL_BIN} get service -n ${ns} ${SERVICE_NAME} -o jsonpath='{.metadata.annotations.opendesk\.eu/mail-domains}' )
# Add default namespace domain
domains+=("${ns}.${DOMAIN}")
for domain in $(printf "%q\n" "${domains[@]}" | sort -u); do
echo "${domain}" >> "${WORKDIR}/virtual_mailbox_domains.txt.tmp"
echo "${domain} ${MAILSERVER_PROTOCOL}:${MAILSERVER}.${ns}:${MAILSERVER_PORT}" >> "${WORKDIR}/transport.map.tmp"
done
done
cmp "${WORKDIR}/transport.map" "${WORKDIR}/transport.map.tmp" || update-postfix
sleep ${DELAY}
echo "👀"
done
...
---
# Source: postfix/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "postfix-ox-config"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
data:
master.cf: |
# service type private unpriv chroot wakeup maxproc command + args
smtp inet n - n - 200 smtpd
-o smtpd_client_connection_count_limit=15
-o smtpd_client_restrictions=
-o smtpd_proxy_options=speed_adjust
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject_unauth_destination
-o smtpd_sender_restrictions=
submission inet n - n - - smtpd
-o smtpd_client_connection_count_limit=15
-o smtpd_proxy_options=speed_adjust
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o smtpd_reject_unlisted_recipient=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_security_level=encrypt
-o syslog_name=postfix/submission
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
postlog unix-dgram n - n - 1 postlogd
lmtps unix - - n - - lmtp
-o lmtp_send_xforward_command=yes
-o lmtp_tls_ciphers=high
-o lmtp_tls_mandatory_ciphers=high
-o lmtp_tls_mandatory_protocols=>=TLSv1.2
-o lmtp_tls_note_starttls_offer=yes
-o lmtp_tls_protocols=>=TLSv1.2
-o lmtp_tls_security_level=encrypt
main.cf: |
compatibility_level=3.6
mydomain = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
myhostname = postfix
myorigin = $mydomain
inet_protocols = ipv4
# Message size limit
message_size_limit = 50000000
# Relayed networks
mynetworks = 127.0.0.1/32 [::1]/128
# Empty alias list to override the configuration variable and disable NIS
alias_maps =
# Only accept virtual emails
mydestination = $myhostname, localhost.$mydomain, localhost
# What mechanisms the Postfix lmtp/smtp client uses to look up a host's IP address
lmtp_host_lookup = native
smtp_host_lookup = native
recipient_delimiter = +
# Relayhost if any is configured
relayhost =
content_filter =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = lmdb:/etc/postfix/sasl_passwd.map
smtp_sasl_security_options =
smtp_tls_CAfile =
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache
virtual_mailbox_domains = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
virtual_transport = lmtps:dovecot:24
transport_maps =
###############
# Restrictions
###############
# Delay all rejects until all information can be logged
smtpd_delay_reject = yes
# Allowed senders are: the user or one of the alias destinations
smtpd_sender_login_maps = $virtual_alias_maps
# Helo restrictions are specified for smtp only in master.cf
smtpd_helo_required = yes
# Sender restrictions
smtpd_sender_restrictions =
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_sender_login_mismatch,
permit
# Recipient restrictions:
smtpd_recipient_restrictions =
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_sasl_authenticated,
permit
# Relay restrictions
smtpd_relay_restrictions =
permit_sasl_authenticated,
reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = inet:dovecot:3659
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/tls/tls.crt
smtpd_tls_key_file = /etc/tls/tls.key
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_database = lmdb:/var/lib/postfix/smtpd_scache
smtpd_milters = inet:clamav-simple:7357
milter_default_action = tempfail
###############
# Extra Settings
###############
maillog_file = /dev/stdout
smtpd.conf: |
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
sasldb_path: /etc/postfix/sasldb
...
---
# Source: postfix/templates/persistentvolumeclaim.yaml
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "postfix-ox"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: postfix/templates/service-external.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "postfix-ox-external"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
annotations:
"helm.sh/resource-policy": "keep"
spec:
type: "LoadBalancer"
externalTrafficPolicy: "Cluster"
internalTrafficPolicy: "Cluster"
ports:
- port: 25
targetPort: 25
protocol: "TCP"
name: "smtp"
- port: 587
targetPort: 587
protocol: "TCP"
name: "smtps"
selector:
app.kubernetes.io/name: postfix
app.kubernetes.io/instance: postfix-ox
...
---
# Source: postfix/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "postfix-ox"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
spec:
type: "ClusterIP"
ports:
- port: 25
targetPort: 25
protocol: "TCP"
name: "smtp"
- port: 587
targetPort: 587
protocol: "TCP"
name: "smtps"
selector:
app.kubernetes.io/name: postfix
app.kubernetes.io/instance: postfix-ox
...
---
# Source: postfix/templates/deployment.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "postfix-ox"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "postfix"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: postfix
app.kubernetes.io/instance: postfix-ox
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: 41de5e81fa3d031735a8bafaaa4f71addb27f60fea82757bbe87ca3e1067841b
checksum/configmapoverrides: 58a173189b67d5c2a841e2ba8d602e4fb6d70ffd239bd848b52c3cf03cc98f40
checksum/configmapnamespacewatcherbin: 0acbd8ef08e9799e69bbd9ea562bc7bc253aea187a6e8491ca74f651406464d4
labels:
app.kubernetes.io/name: postfix
helm.sh/chart: postfix-3.0.1
app.kubernetes.io/instance: postfix-ox
app.kubernetes.io/managed-by: Helm
spec:
imagePullSecrets:
securityContext:
fsGroup: 101
serviceAccountName: postfix-ox
volumes:
- name: "postfix-scripts"
configMap:
name: "postfix-ox-scripts"
defaultMode: 0777
- name: "config-templates"
configMap:
name: "postfix-ox-config"
- name: "config-master"
configMap:
name: "postfix-ox-config"
items:
- key: "master.cf"
path: "master.cf"
- name: "config-main"
configMap:
name: "postfix-ox-config"
items:
- key: "main.cf"
path: "main.cf"
- name: "config"
emptyDir:
sizeLimit: "100Mi"
medium: "Memory"
- name: "lib-postfix"
emptyDir:
sizeLimit: "100Mi"
medium: "Memory"
- name: "tls"
secret:
secretName: "opendesk-certificates-tls"
- name: "spool-postfix"
persistentVolumeClaim:
claimName: "postfix-ox"
- name: "overrides"
configMap:
name: "postfix-ox-overrides"
initContainers:
- name: "init-postfix"
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d"
imagePullPolicy: "IfNotPresent"
command: ['bash', '-c', "/usr/local/bin/init-postfix.sh"]
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
volumeMounts:
- name: "config"
mountPath: "/etc/postfix-copy"
- name: "config-templates"
mountPath: "/etc/postfix/master.cf.template"
subPath: "master.cf"
- name: "config-templates"
mountPath: "/etc/postfix/main.cf.template"
subPath: "main.cf"
- name: "lib-postfix"
mountPath: "/var/lib/postfix"
- name: "postfix-scripts"
mountPath: "/usr/local/bin/init-postfix.sh"
subPath: "init-postfix.sh"
- name: "tls"
mountPath: "/etc/tls"
- name: "spool-postfix"
mountPath: "/var/spool/postfix"
- name: "overrides"
mountPath: "/overrides"
containers:
- name: "postfix"
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: true
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d"
imagePullPolicy: "IfNotPresent"
command: ['bash', '-c', "/usr/local/bin/start-postfix.sh"]
env:
ports:
- name: smtp
containerPort: 25
protocol: "TCP"
- name: smtps
containerPort: 587
protocol: "TCP"
readinessProbe:
tcpSocket:
port: 25
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
livenessProbe:
tcpSocket:
port: 25
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
volumeMounts:
- name: "config"
mountPath: "/etc/postfix"
readOnly: true
- name: "postfix-scripts"
mountPath: "/usr/local/bin/start-postfix.sh"
subPath: "start-postfix.sh"
- name: "lib-postfix"
mountPath: "/var/lib/postfix"
- name: "tls"
mountPath: "/etc/tls"
- name: "spool-postfix"
mountPath: "/var/spool/postfix"
...
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: open-xchange-core-mw
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/envvars.yaml
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-imageconverter-envvars
namespace: yschmidt-opendesk-argo
annotations:
helm.sh/resource-policy: "keep"
labels:
helm.sh/chart: core-imageconverter-2.34.1
type: Opaque
data:
MASTER_ADMIN_USER: "YWRtaW4="
MASTER_ADMIN_PW: "ODE4ZjI2YmY4NjY1NDgwYzdlMWUyY2VkZmFkZWQyODVhYzFjOGIxNg=="
OX_BASIC_AUTH_LOGIN: "b3hsb2dpbg=="
OX_BASIC_AUTH_PASSWORD: "MzAxNzExZmNiOGFmNjY0YWYyNzE0MTFjYmY0MDNkMDdmMzI4NzEyZA=="
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# contextsets-secret
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-contextsets-secret
data:
context-sets-secret-overrides.yaml: e30=
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# etc-secrets-secret
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-etc-secrets-secret
data:
oxguardpass: TUNZakptTW1ZM1pqVmxaVEZoT0dFell6WTRaREE9ClJDWVRobE16WXdNbU5sTVRNM01EQTNOak0zWTJRPQo=
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# mysql-secret
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-mysql
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
type: Opaque
stringData:
MYSQL_WRITE_HOST: mariadb
MYSQL_WRITE_PORT: "3306"
MYSQL_WRITE_DATABASE: configdb
MYSQL_WRITE_USER: root
MYSQL_WRITE_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
MYSQL_READ_HOST: mariadb
MYSQL_READ_PORT: "3306"
MYSQL_READ_DATABASE: configdb
MYSQL_READ_USER: root
MYSQL_READ_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
MYSQL_HOST: mariadb
MYSQL_PORT: "3306"
MYSQL_DATABASE: configdb
MYSQL_USER: root
MYSQL_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# properties-secret
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-properties-secret
data:
1000_secret-overrides.yaml: Cgphbnl3aGVyZTogCiAgY29tLm9wZW5leGNoYW5nZS5jb25mZXJlbmNlLmVsZW1lbnQuYXV0aFRva2VuOiA1ZGJhYTgyZWRhODViYjI1Zjc5NjMwNjNiMzI3NTU1ZTNmM2E4MjFkCiAgY29tLm9wZW5leGNoYW5nZS5jb29raWUuaGFzaC5zYWx0OiA2ZGE0N2NmN2MzMTlkMzk4YWU0YzNhNDgyM2Q1NGQ2MDI0ZTM2ZmQwCiAgY29tLm9wZW5leGNoYW5nZS5zZXNzaW9uZC5lbmNyeXB0aW9uS2V5OiA0M2EwMmIyMzFjYzc1MTVkMTQ3NzI5MDExZTU1ZDMzZGJiN2ExMGZmCiAgY29tLm9wZW5leGNoYW5nZS5zaGFyZS5jcnlwdEtleTogOTEyODFmMjBlMDA5NmY1Y2UyNzk0Nzk5MTU4YWM5MTU5NTM4NjUyMQogIAo=
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# secret-envvars
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-secret-envvars
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
type: Opaque
data:
CREDSTORAGE_PASSCRYPT: aWx5YUhPRmY1dmVEY0hvdktjTXc4aFVpZ1BSTkxBdVQ=
MASTER_ADMIN_USER: YWRtaW4=
MASTER_ADMIN_PW: ODE4ZjI2YmY4NjY1NDgwYzdlMWUyY2VkZmFkZWQyODVhYzFjOGIxNg==
OX_BASIC_AUTH_LOGIN: b3hsb2dpbg==
OX_BASIC_AUTH_PASSWORD: MzAxNzExZmNiOGFmNjY0YWYyNzE0MTFjYmY0MDNkMDdmMzI4NzEyZA==
JOLOKIA_LOGIN: am9sb2tpYQ==
JOLOKIA_PASSWORD: MjIwMWViZGM1M2EzMjI1NGE4NzdlNTA1NWRjZjBjZjQwMjYzMDI5NA==
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# ui-settings-secret
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-ui-settings-secret
data:
2000_secret-ui-overrides.yaml: Cgovb3B0L29wZW4teGNoYW5nZS9ldGMvc2V0dGluZ3Mvb3ZlcnJpZGVzLnByb3BlcnRpZXM6IAogIHt9Cgo=
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# yaml-secrets-secret
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-mw-yaml-secrets-secret
data:
ldap-client-config.yml: Y29udGFjdHNMZGFwQ2xpZW50OgogIGF1dGg6CiAgICBhZG1pbkROOgogICAgICBkbjogdWlkPWxkYXBzZWFyY2hfb3gsY249dXNlcnMsZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwKICAgICAgcGFzc3dvcmQ6IDU3MzU2YmY5MmU0NzUxNjRhOGM0NTIyZGZkODQ1M2JiMTYyMDk0ZDQKICAgIHR5cGU6IGFkbWluRE4KICBwb29sOgogICAgaG9zdDoKICAgICAgYWRkcmVzczogdW1zLWxkYXAtc2VydmVyCiAgICAgIHBvcnQ6IDM4OQogICAgdHlwZTogc2ltcGxl
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/redis-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-core-ui-middleware-redis
type: Opaque
data:
username: "ZGVmYXVsdA=="
password: "MDdjNTI0ZjBkM2Y5NWI0ZDAzZmVhNTRlYTEwY2ZiODQ4YmRiMzU1ZQ=="
---
# Source: appsuite-public-sector/charts/appsuite/templates/common-env-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: open-xchange-common-env
namespace: yschmidt-opendesk-argo
annotations:
helm.sh/resource-policy: "keep"
labels:
helm.sh/chart: appsuite-8.35.284
data:
COOKIE_HASH_SALT: NmRhNDdjZjdjMzE5ZDM5OGFlNGMzYTQ4MjNkNTRkNjAyNGUzNmZkMA==
SHARE_CRYPT_KEY: OTEyODFmMjBlMDA5NmY1Y2UyNzk0Nzk5MTU4YWM5MTU5NTM4NjUyMQ==
SESSIOND_ENCRYPTION_KEY: NDNhMDJiMjMxY2M3NTE1ZDE0NzcyOTAxMWU1NWQzM2RiYjdhMTBmZg==
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-documentconverter-dc-configmap
data:
logback.xml: |
false
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Etc/UTC
false
false
true
2048
0
true
/var/log/open-xchange/documentconverter/documentconverter.log
/var/log/open-xchange/documentconverter/documentconverter.log.%d{yyyy-MM-dd}.%i
2MB
5
%-4r [%t] %5p %c{1} - %m %mdc %n
2048
0
true
documentconverter.properties: |
com.openexchange.documentconverter.cacheDir=/var/spool/open-xchange/documentconverter/cache
com.openexchange.documentconverter.scratchDir=/var/spool/open-xchange/documentconverter/scratch
com.openexchange.documentconverter.useCool=false
com.openexchange.documentconverter.coolUrl=http://open-xchange-collabora-online.yschmidt-opendesk-argo.svc.cluster.local:9980
com.openexchange.documentconverter.jobProcessorCount=3
com.openexchange.documentconverter.jobExecutionTimeoutMilliseconds=60000
com.openexchange.documentconverter.jobQueueCountLimitHigh=40
com.openexchange.documentconverter.jobQueueCountLimitLow=30
com.openexchange.documentconverter.jobQueueTimeoutSeconds=300
com.openexchange.documentconverter.jobAsyncQueueCountLimitHigh=2048
com.openexchange.documentconverter.maxCacheEntries=4000000
com.openexchange.documentconverter.maxCacheSizeMB=-1
com.openexchange.documentconverter.cacheEntryTimeoutSeconds=2592000
com.openexchange.documentconverter.minFreeVolumeSizeMB=1024
com.openexchange.documentconverter.cacheCleanupPeriodSeconds=300
com.openexchange.documentconverter.probe.liveness.periodSeconds=10
com.openexchange.documentconverter.probe.readiness.periodSeconds=5
com.openexchange.documentconverter.probe.readiness.downAfterUsedServiceUnavailabilitySeconds=300
com.openexchange.documentconverter.probe.liveness.downAfterReadinessDownSeconds=15
com.openexchange.documentconverter.probe.readiness.upRecoveryPeriodSeconds=20
readerengine.blacklist: |
.*
readerengine.whitelist: |
file:///opt/readerengine/share/gallery/.*
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-imageconverter-ic-configmap
data:
configdb.properties: |
readDriverClass=com.mysql.cj.jdbc.Driver
readUrl=jdbc:mysql://mariadb:3306/configdb
readProperty.1=user=root
readProperty.2=password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
writeDriverClass=com.mysql.cj.jdbc.Driver
writeUrl=jdbc:mysql://mariadb:3306/configdb
writeProperty.1=user=root
writeProperty.2=password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
cleanerInterval=10000
maxIdle=-1
maxIdleTime=60000
maxActive=100
maxWait=10000
maxLifeTime=600000
exhaustedAction=BLOCK
testOnActivate=false
testOnDeactivate=true
testOnIdle=false
testThreads=false
com.openexchange.database.replicationMonitor=true
com.openexchange.database.checkWriteCons=false
logback.xml: |
false
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Etc/UTC
false
false
true
2048
0
true
/var/log/open-xchange/imageconverter/imageconverter.log.0
/var/log/open-xchange/imageconverter/imageconverter.log.%i
1
5
2MB
%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ"} %-5level [%thread] %class.%method\(%class{0}.java:%line\)%n%sanitisedMessage%n%lmdc%exception{full}
2048
0
true
icconfig.properties: |
SERVER_NAME=server
com.openexchange.cookie.hash.salt={{ COOKIE_HASH_SALT }}
com.openexchange.sessiond.encryptionKey={{ SESSIOND_ENCRYPTION_KEY }}
com.openexchange.share.cryptKey={{ SHARE_CRYPT_KEY }}
com.openexchange.rest.services.basic-auth.login={{ OX_BASIC_AUTH_LOGIN }}
com.openexchange.rest.services.basic-auth.password={{ OX_BASIC_AUTH_PASSWORD }}
com.openexchange.connector.networkListenerHost=0.0.0.0
com.openexchange.connector.networkListenerPort=8005
com.openexchange.connector.networkSslListenerPort=8014
com.openexchange.connector.livenessPort=8018
com.openexchange.rmi.port=1095
JMXPort=9995
com.openexchange.hazelcast.enabled=false
com.openexchange.monitoring.memory.enabled=false
com.openexchange.redis.hosts=redis-headless:6379
com.openexchange.redis.username=default
com.openexchange.redis.password=07c524f0d3f95b4d03fea54ea10cfb848bdb355e
com.openexchange.redis.mode=standalone
com.openexchange.redis.ssl=false
com.openexchange.redis.cache.enabled=false
com.openexchange.objectcache.database.host=mariadb
com.openexchange.objectcache.database.port=3306
com.openexchange.objectcache.database.schema=configdb
com.openexchange.objectcache.database.user=root
com.openexchange.objectcache.database.password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
com.openexchange.objectcache.objectstore.s3.-1.endpoint=.
com.openexchange.objectcache.objectstore.s3.-1.region=eu-central-1
com.openexchange.objectcache.objectstore.s3.-1.bucketName=objectcache
com.openexchange.objectcache.objectstore.s3.-1.accessKey=.
com.openexchange.objectcache.objectstore.s3.-1.secretKey=.
com.openexchange.objectcache.objectStoreIds={{ OXENV_OBJECTSTOREID }}, s3:-1,
com.openexchange.imageconverter.convertTimeoutMillis=20000
com.openexchange.imageconverter.queueLength=512
com.openexchange.imageconverter.asyncQueueLength=486
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# as-config-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-as-config-configmap
data:
as-config.yml: |
default:
host: all
oidcLogin: true
oidcPath: /oidc
productName: openDesk
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# contextsets-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-contextsets-configmap
data:
context-sets-overrides.yaml: |
{}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# etc-files-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-etc-files-configmap
data: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# hook-before-apply-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-hook-before-apply-configmap
data: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# hook-before-appsuite-start-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-hook-before-appsuite-start-configmap
data:
create-guard-dir.sh: |
mkdir -p /opt/open-xchange/guard-files
chown open-xchange:open-xchange /opt/open-xchange/guard-files
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# hook-start-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-hook-start-configmap
data: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# meta-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-meta-configmap
data:
meta-overrides.yaml: |
{}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# properties-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-default-properties-configmap
data:
998_properties.yaml: |
anywhere:
ENABLE_INTERNAL_USER_EDIT: "false"
com.openexchange.IPCheck: "false"
com.openexchange.UIWebPath: /appsuite/
com.openexchange.admin.bypassAccessCombinationChecks: "true"
com.openexchange.authentication.oauth.clientId: opendesk-oxappsuite
com.openexchange.authentication.oauth.clientSecret: ba9c972d28385e400bc71a5869b8219ec42afb45
com.openexchange.authentication.oauth.tokenEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token
com.openexchange.capability.client-onboarding: "true"
com.openexchange.capability.document_preview: "true"
com.openexchange.capability.dynamic-theme: "true"
com.openexchange.capability.filestorage_nextcloud: "true"
com.openexchange.capability.filestorage_nextcloud_oauth: "true"
com.openexchange.capability.guard: "true"
com.openexchange.capability.guard-mail: "true"
com.openexchange.capability.invite_guests: "false"
com.openexchange.capability.mail_export_pdf: "true"
com.openexchange.capability.public-sector: "true"
com.openexchange.capability.public-sector-element: "true"
com.openexchange.capability.public-sector-navigation: "true"
com.openexchange.capability.share_links: "false"
com.openexchange.capability.smime: "true"
com.openexchange.conference.element.enabled: "true"
com.openexchange.conference.element.matrixLoginUrl: http://opendesk-synapse-web:8008/_matrix/client/v3/login
com.openexchange.conference.element.matrixUuidClaimName: opendesk_username
com.openexchange.conference.element.meetingHostUrl: http://matrix-neodatefix-bot
com.openexchange.connector.networkListenerHost: '*'
com.openexchange.contacts.ldap.accounts: opendesk,other,functional
com.openexchange.cookie.hash: remember
com.openexchange.file.storage.nextcloud.oauth.url: http://opendesk-nextcloud-aio/
com.openexchange.file.storage.nextcloud.oauth.webdav.username.strategy: user
com.openexchange.folderstorage.database.preferDisplayName: "false"
com.openexchange.gdpr.dataexport.active: "false"
com.openexchange.gdpr.dataexport.enabled: "false"
com.openexchange.guard.guestSMTPMailFrom: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
com.openexchange.guard.guestSMTPPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f
com.openexchange.guard.guestSMTPPort: "25"
com.openexchange.guard.guestSMTPServer: postfix
com.openexchange.guard.guestSMTPUsername: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
com.openexchange.guard.storage.file.fileStorageType: file
com.openexchange.guard.storage.file.uploadDirectory: /opt/open-xchange/guard-files/
com.openexchange.guard.useStartTLS: "false"
com.openexchange.imap.attachmentMarker.enabled: "true"
com.openexchange.jolokia.start: "true"
com.openexchange.mail.authType: xoauth2
com.openexchange.mail.exportpdf.collabora.enabled: "true"
com.openexchange.mail.exportpdf.collabora.url: http://collabora:9980
com.openexchange.mail.exportpdf.gotenberg.enabled: "true"
com.openexchange.mail.exportpdf.gotenberg.url: http://open-xchange-gotenberg:3000
com.openexchange.mail.exportpdf.pdfa.collabora.enabled: "true"
com.openexchange.mail.filter.credentialSource: mail
com.openexchange.mail.filter.loginType: global
com.openexchange.mail.filter.preferredSaslMech: XOAUTH2
com.openexchange.mail.filter.server: dovecot
com.openexchange.mail.loginSource: mail
com.openexchange.mail.mailServer: dovecot
com.openexchange.mail.mailServerSource: global
com.openexchange.mail.secondary.authType: XOAUTH2
com.openexchange.mail.transport.authType: xoauth2
com.openexchange.mail.transport.secondary.authType: xoauth2
com.openexchange.mail.transportServer: postfix-ox
com.openexchange.mail.transportServerSource: global
com.openexchange.nextcloud.filepicker.includeAccessToken: "false"
com.openexchange.oauth.provider.allowedIssuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk
com.openexchange.oauth.provider.contextLookupClaim: context
com.openexchange.oauth.provider.contextLookupNamePart: full
com.openexchange.oauth.provider.enabled: "true"
com.openexchange.oauth.provider.jwt.jwksUri: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs
com.openexchange.oauth.provider.mode: expect_jwt
com.openexchange.oauth.provider.userLookupClaim: opendesk_username
com.openexchange.oauth.provider.userLookupNamePart: full
com.openexchange.oidc.autologinCookieMode: ox_direct
com.openexchange.oidc.backchannelLogoutEnabled: "true"
com.openexchange.oidc.clientId: opendesk-oxappsuite
com.openexchange.oidc.clientSecret: ba9c972d28385e400bc71a5869b8219ec42afb45
com.openexchange.oidc.contextLookupClaim: context
com.openexchange.oidc.contextLookupNamePart: full
com.openexchange.oidc.enabled: "true"
com.openexchange.oidc.opAuthorizationEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth
com.openexchange.oidc.opIssuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk
com.openexchange.oidc.opJwkSetEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs
com.openexchange.oidc.opLogoutEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout
com.openexchange.oidc.opTokenEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token
com.openexchange.oidc.rpRedirectURIAuth: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/api/oidc/auth
com.openexchange.oidc.rpRedirectURILogout: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
com.openexchange.oidc.rpRedirectURIPostSSOLogout: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/api/oidc/logout
com.openexchange.oidc.ssoLogout: "true"
com.openexchange.oidc.startDefaultBackend: "true"
com.openexchange.oidc.userLookupClaim: opendesk_username
com.openexchange.oidc.userLookupNamePart: full
com.openexchange.secret.secretSource: '" + ''@'' + + ''/'' +
"'
com.openexchange.showAdmin: "false"
com.openexchange.smime.test: "true"
com.openexchange.user.enforceUniqueDisplayName: "false"
com.openexchange.usm.ox.url: http://localhost:8009/appsuite/api/
/opt/open-xchange/etc/AdminDaemon.properties:
MASTER_ACCOUNT_OVERRIDE: "true"
/opt/open-xchange/etc/AdminUser.properties:
USERNAME_CHANGEABLE: "true"
/opt/open-xchange/etc/antivirus.properties:
com.openexchange.antivirus.enabled: "true"
com.openexchange.antivirus.maxFileSize: "1024"
com.openexchange.antivirus.port: "1344"
com.openexchange.antivirus.server: clamav-simple
/opt/open-xchange/etc/ldapauth.properties:
bindDN: uid=ldapsearch_ox,cn=users,dc=swp-ldap,dc=internal
bindDNPassword: 57356bf92e475164a8c4522dfd8453bb162094d4
bindOnly: "false"
java.naming.provider.url: ldap://ums-ldap-server:389/dc=swp-ldap,dc=internal
/opt/open-xchange/etc/system.properties:
SERVER_NAME: oxserver
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# properties-lean-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-properties-lean-configmap
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
data:
logback.xml: |
false
yyyy-MM-dd'T'HH:mm:ss.SSSZ
Etc/UTC
false
false
true
2048
0
true
languages.properties: |-
io.ox/appsuite/languages/de_DE=Deutsch
io.ox/appsuite/languages/en_US=English (US)
io.ox/appsuite/languages/es_ES=Español
io.ox/appsuite/languages/fr_FR=Français
io.ox/appsuite/languages/it_IT=Italiano
properties-lean-config.properties: |-
### This file was generated by Helm (core-mw)
# config/redis.properties
com.openexchange.redis.hosts=redis-headless:6379
com.openexchange.redis.username=default
com.openexchange.redis.password=07c524f0d3f95b4d03fea54ea10cfb848bdb355e
com.openexchange.redis.mode=standalone
com.openexchange.redis.ssl=false
com.openexchange.redis.cache.enabled=false
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# properties-overwrite-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-default-properties-overwrite-configmap
data:
999_properties_overwrite.yaml: |
anywhere: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# ui-settings-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-ui-settings-configmap
data:
1999_ui-overrides.yaml: |
/opt/open-xchange/etc/settings/overrides.properties:
io.ox.nextcloud//server: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/fs/
io.ox.public-sector//ics/url: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/
io.ox.public-sector//navigation/oxtabname: tab_groupware
io.ox/core//apps/quickLaunchCount: "0"
io.ox/core//categories/predefined: |
[{ "name": "Predefined", "color": "orange", "icon": "bi/exclamation-circle.svg" }]
io.ox/core//coloredIcons: "false"
io.ox/core//features/categories: "true"
io.ox/core//features/enterprisePicker/enabled: "true"
io.ox/core//features/enterprisePicker/showLauncher: "false"
io.ox/core//features/enterprisePicker/showTopRightLauncher: "true"
io.ox/core//features/managedResources: "true"
io.ox/core//features/resourceCalendars: "true"
io.ox/core//features/templates: "true"
io.ox/dynamic-theme//folderBackground: '#ffffff'
io.ox/dynamic-theme//folderHover: '#f5f5f5'
io.ox/dynamic-theme//folderSelected: '#e7dffa'
io.ox/dynamic-theme//listHover: '#f5f5f5'
io.ox/dynamic-theme//listSelected: '#e7dffa'
io.ox/dynamic-theme//logoURL: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg
io.ox/dynamic-theme//logoWidth: "82"
io.ox/dynamic-theme//mainColor: '#571EFA'
io.ox/dynamic-theme//topbarBackground: '#ffffff'
io.ox/dynamic-theme//topbarColor: '#000000'
io.ox/dynamic-theme//topbarHover: rgba(0, 0, 0, 0.1)
io.ox/mail//contactCollectOnMailTransport: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# yaml-files-configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-mw-yaml-files-configmap
data:
contacts-provider-ldap-mappings.yml: |
functional:
displayname: oxPersonal,cn,mailPrimaryAddress
email1: mailPrimaryAddress
file_as: oxPersonal,cn,mailPrimaryAddress
objectid: mailPrimaryAddress
ucs:
anniversary: oxAnniversary
birthday: oxBirthday
branches: oxBranches
cellular_telephone1: mobile
city_business: l
city_home: oxCityHome
city_other: oxCityOther
commercial_register: oxCommercialRegister
company: oxCompany,o
contextid: oxContextIDNum
country_business: oxCountryBusiness,country
country_home: oxCountryHome
country_other: oxCountryOther
creationdate: createTimestamp
department: oxDepartment,department
displayname: oxDisplayName,displayName,name
distributionlist: memberUid
email1: mailPrimaryAddress
email2: oxEmail2
email3: oxEmail3
employeetype: employeeType
fax_business: oxFaxBusiness,facsimileTelehoneNumber
fax_home: oxFaxHome
fax_other: oxFaxOther
file_as: oxDisplayName,displayName,name
givenname: givenName
image1: jpegPhoto
instant_messenger1: oxInstantMessenger1
instant_messenger2: oxInstantMessenger2
internal_userid: uid;logininfo
lastmodified: modifyTimestamp
manager_name: secretary,oxManagerName
marital_status: oxMaritalStatus
markasdistributionlist: objectClass=posixGroup
middle_name: oxMiddleName,middleName
nickname: oxNickName
note: oxNote,description
number_of_children: oxNumOfChildren
number_of_employee: employeeNumber
number_of_images: jpegPhoto=*
objectid: uidNumber,gidNumber
position: oxPosition
postal_code_business: postalCode
postal_code_home: oxPostalCodeHome
postal_code_other: oxPostalCodeOther
profession: oxProfession
room_number: roomNumber
sales_volume: oxSalesVolume
spouse_name: oxSpouseName
state_business: oxStateBusiness,st
state_home: oxStateHome
state_other: oxStateOther
street_business: streetAddress
street_home: oxStreetHome
street_other: oxStreetOther
suffix: oxSuffix
surname: sn
tax_id: oxTaxId
telephone_assistant: oxTelephoneAssistant
telephone_business1: oxTelephoneBusiness1,telephoneNumber
telephone_business2: oxTelephoneBusiness2
telephone_car: oxTelephoneCar
telephone_company: oxTelephoneCompany
telephone_home1: oxTelephoneHome1,homePhone
telephone_home2: oxTelephoneHome2
telephone_ip: oxTelephoneIp
telephone_isdn: internationaliSDNNumber
telephone_other: oxTelephoneOther
telephone_pager: oxTelephonePager,pager
telephone_telex: oxTelephoneTelex,telexNumber
telephone_ttytdd: oxTelephoneTtydd
title: title
url: oxUrl,wWWHome
userfield01: oxUserfiels01
userfield02: oxUserfiels02
userfield03: oxUserfiels03
userfield04: oxUserfiels04
userfield05: oxUserfiels05
userfield06: oxUserfiels06
userfield07: oxUserfiels07
userfield08: oxUserfiels08
userfield09: oxUserfiels09
userfield10: oxUserfiels10
userfield11: oxUserfiels11
userfield12: oxUserfiels12
userfield13: oxUserfiels13
userfield14: oxUserfiels14
userfield15: oxUserfiels15
userfield16: oxUserfiels16
userfield17: oxUserfiels17
userfield18: oxUserfiels18
userfield19: oxUserfiels19
userfield20: oxUserfiels20
contacts-provider-ldap.yml: |
functional:
folders:
mode: static
shownInTree:
defaultValue: true
protected: false
static:
commonContactFilter: (univentionObjectType=oxmail/functional_account)
folders:
- contactFilter: (univentionObjectType=oxmail/functional_account)
name: Funktionale Postfächer
usedForSync:
defaultValue: false
protected: true
usedInPicker:
defaultValue: true
protected: false
ldapClientId: contactsLdapClient
mappings: functional
name: Functional mailboxes
opendesk:
cache:
useCache: false
folders:
dynamicAttributes:
attributeName: o
contactFilterTemplate: (&(univentionObjectType=users/user)(isOxUser=OK)(o=[value]))
contactSearchScope: sub
refreshInterval: 5m
sortOrder: ascending
fixedAttributes:
attributeValues:
- Janitorial
- Product Development
- Management
- Human Resources
contactFilterTemplate: (&(|(objectClass=person)(objectClass=groupOfNames))(ou=[value]))
contactSearchScope: sub
mode: dynamicAttributes
shownInTree:
defaultValue: true
protected: false
static:
commonContactFilter: (|(objectClass=person)(objectClass=groupOfNames))
commonContactSearchScope: sub
folders:
- contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Cupertino))
contactSearchScope: sub
name: Cupertino
- contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=San Mateo))
contactSearchScope: sub
name: San Mateo
- contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Redwood
Shores))
contactSearchScope: sub
name: Redwood Shores
- contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Armonk))
contactSearchScope: sub
name: Armonk
usedForSync:
defaultValue: false
protected: true
usedInPicker:
defaultValue: true
protected: false
isDeletedSupport: false
ldapClientId: contactsLdapClient
mappings: ucs
maxPageSize: 500
name: Example Address Lists
other:
folders:
mode: static
shownInTree:
defaultValue: true
protected: false
static:
commonContactFilter: (&(univentionObjectType=users/user)(isOxUser=OK)(!(o=*)))
folders:
- contactFilter: (&(univentionObjectType=users/user)(isOxUser=OK)(!(o=*)))
name: Ohne Organisation
usedForSync:
defaultValue: false
protected: true
usedInPicker:
defaultValue: true
protected: false
ldapClientId: contactsLdapClient
mappings: ucs
name: Other contacts
---
# Source: appsuite-public-sector/charts/appsuite/templates/ui-middleware-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: open-xchange-core-ui-middleware
data:
config.yaml: |
baseUrls:
- http://open-xchange-core-ui/manifest.json
- http://open-xchange-core-guidedtours/manifest.json
- http://open-xchange-guard-ui/manifest.json
- http://open-xchange-nextcloud-integration-ui/manifest.json
- http://open-xchange-public-sector-ui/manifest.json
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: open-xchange-core-mw
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
rules:
- apiGroups:
- ""
resources:
- pods
- secrets
- services
verbs:
- get
- list
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: open-xchange-core-mw
namespace: yschmidt-opendesk-argo
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: open-xchange-core-mw
subjects:
- kind: ServiceAccount
name: open-xchange-core-mw
namespace: yschmidt-opendesk-argo
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-documentconverter
labels:
app.kubernetes.io/name: core-documentconverter
helm.sh/chart: core-documentconverter-2.33.1
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-documentconverter
version: 8.35.0
spec:
type: ClusterIP
ports:
- port: 8008
targetPort: 8008
protocol: TCP
name: http
- port: 8011
targetPort: 8011
protocol: TCP
name: https
- port: 8017
targetPort: 8017
protocol: TCP
name: http-live
selector:
app.kubernetes.io/name: core-documentconverter
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-guidedtours
labels:
app.kubernetes.io/name: core-guidedtours
helm.sh/chart: core-guidedtours-2.6.14
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-guidedtours
version: 8.6.13
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app.kubernetes.io/name: core-guidedtours
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-imageconverter
labels:
app.kubernetes.io/name: core-imageconverter
helm.sh/chart: core-imageconverter-2.34.1
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-imageconverter
version: 8.35.0
spec:
type: ClusterIP
ports:
- port: 8005
targetPort: 8005
protocol: TCP
name: http
- port: 8014
targetPort: 8014
protocol: TCP
name: https
- port: 8018
targetPort: 8018
protocol: TCP
name: http-live
selector:
app.kubernetes.io/name: core-imageconverter
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/charts/gotenberg/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-gotenberg
labels:
helm.sh/chart: gotenberg-1.10.0
app.kubernetes.io/name: gotenberg
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/version: "8.15.3"
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: gotenberg
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-mw-http-api
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
roles.middleware.open-xchange.com/http-api: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-mw-sync
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
roles.middleware.open-xchange.com/sync: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-mw-admin
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
roles.middleware.open-xchange.com/admin: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-mw-businessmobility
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
roles.middleware.open-xchange.com/businessmobility: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-mw-request-analyzer
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
roles.middleware.open-xchange.com/request-analyzer: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-mw-hazelcast-headless
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
spec:
type: ClusterIP
clusterIP: None
ports:
- name: tcp-hazelcast
port: 5701
selector:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
roles.middleware.open-xchange.com/documents: "true"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-ui-middleware
labels:
grafana.ox.io/service-monitor-implementation: default
app.kubernetes.io/name: core-ui-middleware
helm.sh/chart: core-ui-middleware-3.2.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-ui-middleware
version: 2.1.1
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
- port: 9090
targetPort: tcp-monitoring
protocol: TCP
name: monitoring
selector:
app.kubernetes.io/name: core-ui-middleware
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-ui
labels:
app.kubernetes.io/name: core-ui
helm.sh/chart: core-ui-2.37.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-ui
version: 8.35.2
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app.kubernetes.io/name: core-ui
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-core-user-guide
labels:
app.kubernetes.io/name: core-user-guide
helm.sh/chart: core-user-guide-2.35.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-user-guide
version: 8.35.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app.kubernetes.io/name: core-user-guide
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/guard-ui/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-guard-ui
labels:
app.kubernetes.io/name: guard-ui
helm.sh/chart: guard-ui-2.7.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: guard-ui
version: 8.32.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: guard-ui
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-nextcloud-integration-ui
labels:
app.kubernetes.io/name: nextcloud-integration-ui
helm.sh/chart: nextcloud-integration-ui-1.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: nextcloud-integration-ui
version: 1.4.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app.kubernetes.io/name: nextcloud-integration-ui
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/public-sector-ui/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: open-xchange-public-sector-ui
labels:
app.kubernetes.io/name: public-sector-ui
helm.sh/chart: public-sector-ui-2.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: public-sector-ui
version: 2.4.0
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app.kubernetes.io/name: public-sector-ui
app.kubernetes.io/instance: open-xchange
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-documentconverter
labels:
app.kubernetes.io/name: core-documentconverter
helm.sh/chart: core-documentconverter-2.33.1
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-documentconverter
version: 8.35.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-documentconverter
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
commit.open-xchange.com/documentconverter: c921fccc4dfd01e208e919a7a44c22aad9b23497
logging.open-xchange.com/format: appsuite-json
checksum/commonEnv: e6ddbc18a3e99c6946b281e13d21ba4f42631ee59e6eecdc4c8c786950abbe3d
labels:
app.kubernetes.io/name: core-documentconverter
app.kubernetes.io/instance: open-xchange
app: core-documentconverter
version: 8.35.0
spec:
imagePullSecrets:
[]
serviceAccountName: default
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 987
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter:8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c
imagePullPolicy: IfNotPresent
env:
- name: CONSOLELOG
value: "/dev/tty"
- name: DC_JVM_HEAP_SIZE_MB
value: "768"
- name: DC_JVM_HEAP_MIN_RAM_PERCENTAGE
value:
- name: DC_JVM_HEAP_MAX_RAM_PERCENTAGE
value:
- name: RELEASE_NAMESPACE
value: "open-xchange"
- name: OX_BLACKLISTED_PACKAGES
value: "none"
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: LO_URL_BLACKLIST_FILE
value: "/opt/open-xchange/etc/readerengine.blacklist"
- name: LO_URL_WHITELIST_FILE
value: "/opt/open-xchange/etc/readerengine.whitelist"
- name: LO_URL_LINK_LIMIT
value: "200"
- name: LO_URL_LINK_PROXY
value: ""
envFrom:
- secretRef:
name: open-xchange-common-env
ports:
- name: http
containerPort: 8008
protocol: TCP
- name: https
containerPort: 8011
protocol: TCP
- name: http-live
containerPort: 8017
protocol: TCP
livenessProbe:
httpGet:
path: /health/liveness
port: http-live
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /documentconverterws
port: http
failureThreshold: 2
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
startupProbe:
httpGet:
path: /health/liveness
port: http-live
failureThreshold: 30
initialDelaySeconds: 30
periodSeconds: 10
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 1.25Gi
volumeMounts:
- name: log-config
mountPath: /opt/open-xchange/etc/logback.xml
subPath: logback.xml
- name: dc-config
mountPath: /opt/open-xchange/etc/documentconverter.properties
subPath: documentconverter.properties
- name: dc-logs
mountPath: /var/log/open-xchange/documentconverter
- name: dc-spool
mountPath: /var/spool/open-xchange
- name: dc-urlallow
mountPath: /opt/open-xchange/etc/readerengine.whitelist
subPath: readerengine.whitelist
- name: dc-urldeny
mountPath: /opt/open-xchange/etc/readerengine.blacklist
subPath: readerengine.blacklist
volumes:
- name: log-config
configMap:
name: open-xchange-core-documentconverter-dc-configmap
items:
- key: logback.xml
path: logback.xml
- name: dc-config
configMap:
name: open-xchange-core-documentconverter-dc-configmap
items:
- key: documentconverter.properties
path: documentconverter.properties
- name: dc-logs
emptyDir: {}
- name: dc-spool
emptyDir: {}
- name: dc-urlallow
configMap:
name: open-xchange-core-documentconverter-dc-configmap
items:
- key: readerengine.whitelist
path: readerengine.whitelist
- name: dc-urldeny
configMap:
name: open-xchange-core-documentconverter-dc-configmap
items:
- key: readerengine.blacklist
path: readerengine.blacklist
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-guidedtours
labels:
app.kubernetes.io/name: core-guidedtours
helm.sh/chart: core-guidedtours-2.6.14
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-guidedtours
version: 8.6.13
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-guidedtours
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: core-guidedtours
helm.sh/chart: core-guidedtours-2.6.14
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-guidedtours
version: 8.6.13
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours:8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 2
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-imageconverter
labels:
app.kubernetes.io/name: core-imageconverter
helm.sh/chart: core-imageconverter-2.34.1
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-imageconverter
version: 8.35.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-imageconverter
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
commit.open-xchange.com/backend: 823763748212b6d8cf81da680eb719f059c6446f
commit.open-xchange.com/imageconverter: 1251dfea65601a3b66aeba53537f783bfb7e9697
logging.open-xchange.com/format: appsuite-json
checksum/commonEnv: faf45b39870cd824d8bc0c7bca0bba43d0a4fb979275f222bcdcd93ba1bfe557
labels:
app.kubernetes.io/name: core-imageconverter
app.kubernetes.io/instance: open-xchange
app: core-imageconverter
version: 8.35.0
spec:
imagePullSecrets:
[]
serviceAccountName: default
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 987
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter:8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372
imagePullPolicy: IfNotPresent
env:
- name: CONSOLELOG
value: "/dev/tty"
- name: IC_JVM_HEAP_SIZE_MB
value: "1024"
- name: RELEASE_NAMESPACE
value: "open-xchange"
- name: OX_BLACKLISTED_PACKAGES
value: "none"
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: OXENV_OBJECTSTOREID
value:
envFrom:
- secretRef:
name: open-xchange-common-env
- secretRef:
name: open-xchange-core-imageconverter-envvars
ports:
- name: http
containerPort: 8005
protocol: TCP
- name: https
containerPort: 8014
protocol: TCP
- name: http-live
containerPort: 8018
protocol: TCP
startupProbe:
httpGet:
path: /live
port: http-live
failureThreshold: 30
initialDelaySeconds: 30
periodSeconds: 10
livenessProbe:
httpGet:
path: /live
port: http-live
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /imageconverter
port: http
failureThreshold: 2
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.5
memory: 1.25Gi
volumeMounts:
- name: db-config
mountPath: /opt/open-xchange/etc/configdb.properties
subPath: configdb.properties
- name: log-config
mountPath: /opt/open-xchange/etc/logback.xml
subPath: logback.xml
- name: ic-config
mountPath: /opt/open-xchange/etc2/icconfig.properties
subPath: icconfig.properties
- name: ic-logs
mountPath: /var/log/open-xchange/imageconverter
- name: ic-spool
mountPath: /var/spool/open-xchange
volumes:
- name: db-config
configMap:
name: open-xchange-core-imageconverter-ic-configmap
items:
- key: configdb.properties
path: configdb.properties
- name: log-config
configMap:
name: open-xchange-core-imageconverter-ic-configmap
items:
- key: logback.xml
path: logback.xml
- name: ic-config
configMap:
name: open-xchange-core-imageconverter-ic-configmap
items:
- key: icconfig.properties
path: icconfig.properties
- name: ic-logs
emptyDir: {}
- name: ic-spool
emptyDir: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/charts/gotenberg/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-gotenberg
labels:
helm.sh/chart: gotenberg-1.10.0
app.kubernetes.io/name: gotenberg
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/version: "8.15.3"
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
progressDeadlineSeconds: 120
selector:
matchLabels:
app.kubernetes.io/name: gotenberg
app.kubernetes.io/instance: open-xchange
template:
metadata:
labels:
app.kubernetes.io/name: gotenberg
app.kubernetes.io/instance: open-xchange
spec:
serviceAccountName: default
securityContext:
{}
containers:
- name: gotenberg
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg:8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172"
imagePullPolicy: IfNotPresent
args:
- gotenberg
- --api-port=3000
- --api-download-from-max-retry=4
- --chromium-disable-javascript
- --gotenberg-graceful-shutdown-duration=30s
env:
ports:
- name: http
containerPort: 3000
protocol: TCP
livenessProbe:
httpGet:
path: /health
port: http
readinessProbe:
httpGet:
path: /health
port: http
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.05
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp-volume
terminationGracePeriodSeconds: 30
volumes:
- emptyDir:
medium: Memory
sizeLimit: 256Mi
name: tmp-volume
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-ui-middleware
labels:
app.kubernetes.io/name: core-ui-middleware
helm.sh/chart: core-ui-middleware-3.2.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-ui-middleware
version: 2.1.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-ui-middleware
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: core-ui-middleware
app.kubernetes.io/instance: open-xchange
app: core-ui-middleware
version: 2.1.1
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3
imagePullPolicy: IfNotPresent
env:
- name: CACHE_TTL
value: "30000"
- name: LOG_LEVEL
value: "info"
- name: BIND_ADDR
value: "::"
- name: APP_ROOT
value: "/appsuite/"
- name: COMPRESS_FILE_SIZE
value: "600"
- name: COMPRESS_FILE_TYPES
value: "application/javascript application/json application/x-javascript application/xml application/xml+rss text/css text/html text/javascript text/plain text/xml image/svg+xml"
- name: SLOW_REQUEST_THRESHOLD
value: "4000"
- name: REDIS_MODE
value: "standalone"
- name: REDIS_HOSTS
value: "redis-headless:6379"
- name: REDIS_DB
value: "0"
- name: REDIS_USERNAME
valueFrom:
secretKeyRef:
name: open-xchange-core-ui-middleware-redis
key: username
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: open-xchange-core-ui-middleware-redis
key: password
- name: REDIS_PREFIX
value: "ui-middleware"
- name: REDIS_TLS_ENABLED
value: "false"
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: tcp-monitoring
containerPort: 9090
protocol: TCP
livenessProbe:
httpGet:
path: /live
port: 9000
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 9000
failureThreshold: 2
initialDelaySeconds: 1
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.5
memory: 192Mi
volumeMounts:
- name: manifest-config
mountPath: /app/config/
volumes:
- name: manifest-config
configMap:
name: "open-xchange-core-ui-middleware"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/updater.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-ui-middleware-updater
labels:
app.kubernetes.io/name: core-ui-middleware
helm.sh/chart: core-ui-middleware-3.2.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-ui-middleware
version: 2.1.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-ui-middleware
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: core-ui-middleware
app.kubernetes.io/instance: open-xchange
app: core-ui-middleware
version: 2.1.1
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3
command: ["/nodejs/bin/node", "src/updater.js"]
imagePullPolicy: IfNotPresent
env:
- name: PROPAGATE_UPGRADES
value: "true"
- name: CACHE_TTL
value: "30000"
- name: LOG_LEVEL
value: "info"
- name: BIND_ADDR
value: "::"
- name: APP_ROOT
value: "/appsuite/"
- name: COMPRESS_FILE_SIZE
value: "600"
- name: COMPRESS_FILE_TYPES
value: "application/javascript application/json application/x-javascript application/xml application/xml+rss text/css text/html text/javascript text/plain text/xml image/svg+xml"
- name: SLOW_REQUEST_THRESHOLD
value: "4000"
- name: REDIS_MODE
value: "standalone"
- name: REDIS_HOSTS
value: "redis-headless:6379"
- name: REDIS_DB
value: "0"
- name: REDIS_USERNAME
valueFrom:
secretKeyRef:
name: open-xchange-core-ui-middleware-redis
key: username
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: open-xchange-core-ui-middleware-redis
key: password
- name: REDIS_PREFIX
value: "ui-middleware"
- name: REDIS_TLS_ENABLED
value: "false"
ports:
- name: tcp-monitoring
containerPort: 9090
protocol: TCP
livenessProbe:
httpGet:
path: /live
port: 9000
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 9000
failureThreshold: 2
initialDelaySeconds: 1
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.5
memory: 192Mi
volumeMounts:
- name: manifest-config
mountPath: /app/config/
volumes:
- name: manifest-config
configMap:
name: "open-xchange-core-ui-middleware"
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-ui
labels:
app.kubernetes.io/name: core-ui
helm.sh/chart: core-ui-2.37.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-ui
version: 8.35.2
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-ui
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: core-ui
app.kubernetes.io/instance: open-xchange
app: core-ui
version: 8.35.2
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui:8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-core-user-guide
labels:
app.kubernetes.io/name: core-user-guide
helm.sh/chart: core-user-guide-2.35.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-user-guide
version: 8.35.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-user-guide
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: core-user-guide
app.kubernetes.io/instance: open-xchange
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide:8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 2
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.02
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/guard-ui/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-guard-ui
labels:
app.kubernetes.io/name: guard-ui
helm.sh/chart: guard-ui-2.7.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: guard-ui
version: 8.32.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: guard-ui
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
commit.open-xchange.com/guard-ui: 18b39d1cce594c72c19a659fd74aa40457080bc2
labels:
app.kubernetes.io/name: guard-ui
helm.sh/chart: guard-ui-2.7.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: guard-ui
version: 8.32.0
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: guard-ui
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui:8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-nextcloud-integration-ui
labels:
app.kubernetes.io/name: nextcloud-integration-ui
helm.sh/chart: nextcloud-integration-ui-1.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: nextcloud-integration-ui
version: 1.4.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nextcloud-integration-ui
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: nextcloud-integration-ui
helm.sh/chart: nextcloud-integration-ui-1.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: nextcloud-integration-ui
version: 1.4.0
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui:1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 2
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: appsuite-public-sector/charts/public-sector-ui/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-xchange-public-sector-ui
labels:
app.kubernetes.io/name: public-sector-ui
helm.sh/chart: public-sector-ui-2.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: public-sector-ui
version: 2.4.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: public-sector-ui
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
null
labels:
app.kubernetes.io/name: public-sector-ui
helm.sh/chart: public-sector-ui-2.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: public-sector-ui
version: 2.4.0
spec:
imagePullSecrets:
null
serviceAccountName: default
securityContext:
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
containers:
- name: main
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui:2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
failureThreshold: 2
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
volumeMounts:
- mountPath: /tmp
name: tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: open-xchange-core-mw-default
labels:
app.kubernetes.io/name: core-mw
helm.sh/chart: core-mw-6.6.2
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: core-mw
version: 8.35.31
roles.middleware.open-xchange.com/http-api: "true"
roles.middleware.open-xchange.com/sync: "true"
roles.middleware.open-xchange.com/admin: "true"
roles.middleware.open-xchange.com/businessmobility: "true"
roles.middleware.open-xchange.com/request-analyzer: "true"
roles.middleware.open-xchange.com/documents: "true"
spec:
serviceName: open-xchange-core-mw-hazelcast-headless
podManagementPolicy: OrderedReady
volumeClaimTemplates:
[]
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
template:
metadata:
annotations:
commit.open-xchange.com/backend: 823763748212b6d8cf81da680eb719f059c6446f
commit.open-xchange.com/documentconverter-api: 05f6c22f2e0c7f572efefca0eb8d67d0292d0a48
commit.open-xchange.com/exchange-interop: 7dba363002de2d05f1f5f80cad02e707bb2bac6c
commit.open-xchange.com/guard: 74c97ad3539d5e2d76b0e5c5d34915bd3bffb857
commit.open-xchange.com/imageconverter: 1251dfea65601a3b66aeba53537f783bfb7e9697
commit.open-xchange.com/nextcloud-integration: 60f9130e052350dcbf7587af508d875f06c276c2
commit.open-xchange.com/office: c2f311e15a7a4b8ab36eff2b3a90ec808b5de77c
commit.open-xchange.com/public-sector: ff2817bd44501f651d398c8bfc5185a8a4533ffe
commit.open-xchange.com/weakforced: 7e517a2d71f788ac8e48a16b498638ca62265dc3
logging.open-xchange.com/format: appsuite-json
checksum/allConfig: "56c481653ad61602d3592b583a139bb5af7260810846e41f8483e72742f9b28"
checksum/commonEnv: 0dc97c8ab62b6d74198123eafa78f5e130ccbf213d4a5bda8974bea6862ab119
labels:
app.kubernetes.io/name: core-mw
app.kubernetes.io/instance: open-xchange
app: core-mw
version: 8.35.31
roles.middleware.open-xchange.com/http-api: "true"
roles.middleware.open-xchange.com/sync: "true"
roles.middleware.open-xchange.com/admin: "true"
roles.middleware.open-xchange.com/businessmobility: "true"
roles.middleware.open-xchange.com/request-analyzer: "true"
roles.middleware.open-xchange.com/documents: "true"
spec:
imagePullSecrets:
null
serviceAccountName: open-xchange-core-mw
nodeSelector:
{}
affinity:
{}
tolerations:
[]
terminationGracePeriodSeconds: 120
initContainers:
- name: init-middleware
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
command:
- "/bin/bash"
- "-c"
- |
echo -e "Checking for the availability of MySQL Server deployment"
while ! nc -z -w 5 "${MYSQL_HOST}" "${MYSQL_PORT}"; do
printf "-"
done
echo -e " >> MySQL Server is up & running"
env:
- name: MYSQL_ROOT_PASSWORD
value: ""
- name: SERVER_NAME
value: server
- name: RELEASE_NAMESPACE
value: yschmidt-opendesk-argo
- name: OX_LOG_TO_CONSOLE
value: "true"
- name: OX_BLACKLISTED_PACKAGES
value: open-xchange-admin-autocontextid open-xchange-admin-reseller open-xchange-admin-soap-reseller open-xchange-authentication-database open-xchange-authentication-imap open-xchange-authentication-ldap open-xchange-authentication-masterpassword open-xchange-cassandra open-xchange-dataretention-csv open-xchange-documents-backend open-xchange-documents-monitoring open-xchange-documents-templates open-xchange-eas-provisioning open-xchange-eas-provisioning-mail open-xchange-eas-provisioning-sms open-xchange-hostname-config-cascade open-xchange-hostname-ldap open-xchange-multifactor open-xchange-omf-source open-xchange-omf-source-dualprovisioning open-xchange-omf-source-dualprovisioning-cloudplugins open-xchange-omf-source-guard open-xchange-omf-source-mailfilter open-xchange-parallels open-xchange-passwordchange-script open-xchange-plugins-antiphishing open-xchange-plugins-antiphishing-vadesecure open-xchange-plugins-blackwhitelist open-xchange-plugins-blackwhitelist-sieve open-xchange-plugins-contact-storage-group open-xchange-plugins-contact-storage-provider open-xchange-plugins-contact-whitelist-sync open-xchange-plugins-mx-checker open-xchange-plugins-onboarding-maillogin open-xchange-plugins-trustedidentity open-xchange-plugins-unsubscribe open-xchange-plugins-unsubscribe-vadesecure open-xchange-saml-core open-xchange-sms-sipgate open-xchange-sms-twilio open-xchange-spamhandler-parallels open-xchange-sso open-xchange-weakforced
- name: OX_APPSUITE_APPROOT
value: "/appsuite"
- name: DCS_SERVICENAME
value: open-xchange-core-documents-collaboration
- name: DC_SERVER_URL
value: http://open-xchange-core-documentconverter.yschmidt-opendesk-argo.svc.cluster.local:8008/documentconverterws
- name: CS_SERVER_URL
value: http://open-xchange-core-cacheservice.yschmidt-opendesk-argo.svc.cluster.local:8001/cache
- name: IC_SERVER_URL
value: http://open-xchange-core-imageconverter.yschmidt-opendesk-argo.svc.cluster.local:8005/imageconverter
- name: SPELLCHECK_SERVER_URL
value: http://open-xchange-core-spellcheck.yschmidt-opendesk-argo.svc.cluster.local:8003
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: HELM_RELEASE_NAME
value: open-xchange
- name: JAVA_OPTS_MEM
value: "-XX:MaxHeapSize=2048M"
envFrom:
- secretRef:
name: open-xchange-core-mw-mysql
- secretRef:
name: open-xchange-common-env
- secretRef:
name: open-xchange-core-mw-secret-envvars
resources:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 1
memory: 1.25Gi
volumeMounts:
- name: logs-default
mountPath: /var/log/open-xchange
- name: spool-default
mountPath: /var/spool/open-xchange/
- name: properties-lean-default
mountPath: /opt/open-xchange/etc/logback.xml
subPath: logback.xml
- name: properties-lean-default
mountPath: /opt/open-xchange/etc/languages/appsuite/languages.properties
subPath: languages.properties
- name: properties-lean-default
mountPath: /opt/open-xchange/etc/properties-lean-config.properties
subPath: properties-lean-config.properties
- name: properties-default
mountPath: /injections/configuration/properties
- name: properties-overwrite-default
mountPath: /injections/configuration/properties-overwrite
- name: ui-settings-default
mountPath: /injections/configuration/ui-settings
- name: meta-default
mountPath: /injections/etc/meta/meta
- name: etc-files-default
mountPath: /injections/etc/etc
- name: etc-secrets-default
mountPath: /injections/etc/secretEtc
- name: yaml-files-default
mountPath: /injections/etc/yaml
- name: yaml-secrets-default
mountPath: /injections/etc/secretYaml
- name: as-config-default
mountPath: /injections/etc/as-config
- name: context-sets-default
mountPath: /injections/etc/context-sets/contextSets
- name: start-hooks-default
mountPath: /hooks/start/helm/
- name: before-apply-hooks-default
mountPath: /hooks/beforeApply/helm/
- name: before-appsuite-start-hooks-default
mountPath: /hooks/beforeAppsuiteStart/helm/
containers:
- name: core-mw
image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
ports:
- containerPort: 8009
name: http
livenessProbe:
initialDelaySeconds:
periodSeconds: 10
failureThreshold: 15
timeoutSeconds:
httpGet:
path: /live
port: 8016
scheme: HTTP
startupProbe:
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 30
timeoutSeconds:
httpGet:
path: /health
port: 8009
scheme: HTTP
readinessProbe:
initialDelaySeconds: 30
periodSeconds: 5
failureThreshold: 2
timeoutSeconds: 5
httpGet:
path: /ready
port: 8009
scheme: HTTP
env:
- name: MYSQL_ROOT_PASSWORD
value: ""
- name: SERVER_NAME
value: server
- name: RELEASE_NAMESPACE
value: yschmidt-opendesk-argo
- name: OX_LOG_TO_CONSOLE
value: "true"
- name: OX_BLACKLISTED_PACKAGES
value: open-xchange-admin-autocontextid open-xchange-admin-reseller open-xchange-admin-soap-reseller open-xchange-authentication-database open-xchange-authentication-imap open-xchange-authentication-ldap open-xchange-authentication-masterpassword open-xchange-cassandra open-xchange-dataretention-csv open-xchange-documents-backend open-xchange-documents-monitoring open-xchange-documents-templates open-xchange-eas-provisioning open-xchange-eas-provisioning-mail open-xchange-eas-provisioning-sms open-xchange-hostname-config-cascade open-xchange-hostname-ldap open-xchange-multifactor open-xchange-omf-source open-xchange-omf-source-dualprovisioning open-xchange-omf-source-dualprovisioning-cloudplugins open-xchange-omf-source-guard open-xchange-omf-source-mailfilter open-xchange-parallels open-xchange-passwordchange-script open-xchange-plugins-antiphishing open-xchange-plugins-antiphishing-vadesecure open-xchange-plugins-blackwhitelist open-xchange-plugins-blackwhitelist-sieve open-xchange-plugins-contact-storage-group open-xchange-plugins-contact-storage-provider open-xchange-plugins-contact-whitelist-sync open-xchange-plugins-mx-checker open-xchange-plugins-onboarding-maillogin open-xchange-plugins-trustedidentity open-xchange-plugins-unsubscribe open-xchange-plugins-unsubscribe-vadesecure open-xchange-saml-core open-xchange-sms-sipgate open-xchange-sms-twilio open-xchange-spamhandler-parallels open-xchange-sso open-xchange-weakforced
- name: OX_APPSUITE_APPROOT
value: "/appsuite"
- name: DCS_SERVICENAME
value: open-xchange-core-documents-collaboration
- name: DC_SERVER_URL
value: http://open-xchange-core-documentconverter.yschmidt-opendesk-argo.svc.cluster.local:8008/documentconverterws
- name: CS_SERVER_URL
value: http://open-xchange-core-cacheservice.yschmidt-opendesk-argo.svc.cluster.local:8001/cache
- name: IC_SERVER_URL
value: http://open-xchange-core-imageconverter.yschmidt-opendesk-argo.svc.cluster.local:8005/imageconverter
- name: SPELLCHECK_SERVER_URL
value: http://open-xchange-core-spellcheck.yschmidt-opendesk-argo.svc.cluster.local:8003
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: HELM_RELEASE_NAME
value: open-xchange
- name: HZ_ENABLED
value: "true"
- name: HZ_SERVICE_DNS
value: "open-xchange-core-mw-hazelcast-headless.yschmidt-opendesk-argo.svc.cluster.local"
- name: HZ_GROUP_NAME
value: "hzgroup"
- name: HZ_GROUP_PASSWORD
value: "6e1ec5fff93ffe194feaec82ae14836c3c33fcb8"
- name: JAVA_OPTS_MEM
value: "-XX:MaxHeapSize=2048M"
envFrom:
- secretRef:
name: open-xchange-core-mw-mysql
- secretRef:
name: open-xchange-common-env
- secretRef:
name: open-xchange-core-mw-secret-envvars
resources:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 1
memory: 1.25Gi
volumeMounts:
- name: logs-default
mountPath: /var/log/open-xchange
- name: spool-default
mountPath: /var/spool/open-xchange/
- name: properties-lean-default
mountPath: /opt/open-xchange/etc/logback.xml
subPath: logback.xml
- name: properties-lean-default
mountPath: /opt/open-xchange/etc/languages/appsuite/languages.properties
subPath: languages.properties
- name: properties-lean-default
mountPath: /opt/open-xchange/etc/properties-lean-config.properties
subPath: properties-lean-config.properties
- name: properties-default
mountPath: /injections/configuration/properties
- name: properties-overwrite-default
mountPath: /injections/configuration/properties-overwrite
- name: ui-settings-default
mountPath: /injections/configuration/ui-settings
- name: meta-default
mountPath: /injections/etc/meta/meta
- name: etc-files-default
mountPath: /injections/etc/etc
- name: etc-secrets-default
mountPath: /injections/etc/secretEtc
- name: yaml-files-default
mountPath: /injections/etc/yaml
- name: yaml-secrets-default
mountPath: /injections/etc/secretYaml
- name: as-config-default
mountPath: /injections/etc/as-config
- name: context-sets-default
mountPath: /injections/etc/context-sets/contextSets
- name: start-hooks-default
mountPath: /hooks/start/helm/
- name: before-apply-hooks-default
mountPath: /hooks/beforeApply/helm/
- name: before-appsuite-start-hooks-default
mountPath: /hooks/beforeAppsuiteStart/helm/
- name: drive-restricted-config
mountPath: /opt/open-xchange/etc/pushClientConfig/drive-restricted-config.yaml
readOnly: true
- name: drive-restricted-fcm-keystore
mountPath: /opt/open-xchange/etc/pushClientConfig/drive-mobile-android
readOnly: true
- name: mobile-api-facade-restricted-config
mountPath: /opt/open-xchange/etc/pushClientConfig/mobile-api-facade-restricted-config.yaml
readOnly: true
volumes:
- name: shared-default
emptyDir: {}
- name: properties-lean-default
configMap:
name: open-xchange-core-mw-properties-lean-configmap
items:
- key: logback.xml
path: logback.xml
- key: languages.properties
path: languages.properties
- key: properties-lean-config.properties
path: properties-lean-config.properties
- name: disabled-bundles-default
emptyDir: {}
- name: logs-default
emptyDir: {}
- name: spool-default
emptyDir: {}
- name: properties-default
projected:
sources:
- secret:
name: open-xchange-core-mw-properties-secret
- configMap:
name: open-xchange-core-mw-default-properties-configmap
- name: properties-overwrite-default
projected:
sources:
- configMap:
name: open-xchange-core-mw-default-properties-overwrite-configmap
- name: ui-settings-default
projected:
sources:
- secret:
name: open-xchange-core-mw-ui-settings-secret
- configMap:
name: open-xchange-core-mw-ui-settings-configmap
- name: meta-default
projected:
sources:
- configMap:
name: open-xchange-core-mw-meta-configmap
- name: etc-files-default
projected:
sources:
- configMap:
name: open-xchange-core-mw-etc-files-configmap
- name: etc-secrets-default
projected:
sources:
- secret:
name: open-xchange-core-mw-etc-secrets-secret
- name: yaml-files-default
projected:
sources:
- configMap:
name: open-xchange-core-mw-yaml-files-configmap
items:
- key: contacts-provider-ldap-mappings.yml
path: contacts-provider-ldap-mappings.yml
- key: contacts-provider-ldap.yml
path: contacts-provider-ldap.yml
- name: yaml-secrets-default
projected:
sources:
- secret:
name: open-xchange-core-mw-yaml-secrets-secret
items:
- key: ldap-client-config.yml
path: ldap-client-config.yml
- name: context-sets-default
projected:
sources:
- secret:
name: open-xchange-core-mw-contextsets-secret
- configMap:
name: open-xchange-core-mw-contextsets-configmap
- name: as-config-default
projected:
sources:
- configMap:
name: open-xchange-core-mw-as-config-configmap
- name: start-hooks-default
configMap:
name: open-xchange-core-mw-hook-start-configmap
- name: before-apply-hooks-default
configMap:
name: open-xchange-core-mw-hook-before-apply-configmap
- name: before-appsuite-start-hooks-default
configMap:
name: open-xchange-core-mw-hook-before-appsuite-start-configmap
- name: drive-restricted-config
secret:
secretName: drive-restricted-config
optional: true
- name: drive-restricted-fcm-keystore
secret:
secretName: drive-restricted-fcm-keystore
optional: true
- name: mobile-api-facade-restricted-config
secret:
secretName: mobile-api-facade-restricted-config
optional: true
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-appsuite-base
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/
pathType: Prefix
backend:
service:
name: open-xchange-core-ui-middleware
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rootredirect
annotations:
nginx.ingress.kubernetes.io/app-root: /appsuite/
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-ui-middleware
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rest-routes-admin
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /admin
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rest-routes-advertisement
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /advertisement
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rest-routes-chronos
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /chronos
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rest-routes-preliminary
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /preliminary
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rest-routes-userfeedback
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /userfeedback
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-static-routes-servlet
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /servlet
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-static-routes-realtime
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /realtime
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-static-routes-infostore
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /infostore
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-static-routes-webservices
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /webservices
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-drive-client-windows-ox-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: drive-client-windows-ox-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /api/drive/client/windows/ox/install(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-drive-client-windows-ox
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-guard-api-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /oxguard$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: guard-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/api/oxguard(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-guard-support-api-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /guardsupport$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: guard-support-api-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/api/guardsupport(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-guard-pgp-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /pgp$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: guard-pgp-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /pks(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-http-api-routes-api
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-api
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /api(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-http-api-routes-ajax
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-ajax
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /ajax(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-http-api-routes-appsuite-api
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-appsuite-api
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 100M
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/api(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-rt2-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /rt2$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: rt2-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/rt2(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-http-api
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-documents-help-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /help-documents$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: documents-help-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/help-documents(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-office-user-guide
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-drive-help-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /help$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: drive-help-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/help-drive(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-drive-help
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-core-help-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /help$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: core-help-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/help(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-user-guide
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-office-web-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /appsuite$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: office-web-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /appsuite/office(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-ui-middleware
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-caldav-well-known-redirect
annotations:
nginx.ingress.kubernetes.io/temporal-redirect: /caldav/
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /.well-known/caldav
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-ui-middleware
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-carddav-well-known-redirect
annotations:
nginx.ingress.kubernetes.io/temporal-redirect: /carddav/
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /.well-known/carddav
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-ui-middleware
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-dav-infostore-route
annotations:
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: authorization
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /servlet/webdav.infostore/
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-sync
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: open-xchange-appsuite-dav-root-route
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /servlet/dav/$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: dav-root-route
nginx.ingress.kubernetes.io/session-cookie-change-on-failure: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
http:
paths:
- path: /(.*)
pathType: ImplementationSpecific
backend:
service:
name: open-xchange-core-mw-sync
port:
number: 80
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# etc-binaries-configmap
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml
# etc-binaries-secret
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "open-xchange-core-guidedtours-test-connection"
labels:
helm.sh/chart: core-guidedtours-2.6.14
app.kubernetes.io/name: core-guidedtours
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/version: "8.6.13"
app.kubernetes.io/managed-by: Helm
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['open-xchange-core-guidedtours:80']
restartPolicy: Never
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "open-xchange-core-ui-test-connection"
labels:
helm.sh/chart: core-ui-2.37.2
app.kubernetes.io/name: core-ui
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/version: "8.35.2"
app.kubernetes.io/managed-by: Helm
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['open-xchange-core-ui:80']
restartPolicy: Never
---
# Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "open-xchange-core-user-guide-test-connection"
labels:
helm.sh/chart: core-user-guide-2.35.0
app.kubernetes.io/name: core-user-guide
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/version: "8.35.0"
app.kubernetes.io/managed-by: Helm
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['open-xchange-core-user-guide:80']
restartPolicy: Never
---
# Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "open-xchange-nextcloud-integration-ui-test-connection"
labels:
app.kubernetes.io/name: nextcloud-integration-ui
helm.sh/chart: nextcloud-integration-ui-1.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: nextcloud-integration-ui
version: 1.4.0
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['open-xchange-nextcloud-integration-ui:80']
restartPolicy: Never
---
# Source: appsuite-public-sector/charts/public-sector-ui/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "open-xchange-public-sector-ui-test-connection"
labels:
app.kubernetes.io/name: public-sector-ui
helm.sh/chart: public-sector-ui-2.4.0
app.kubernetes.io/instance: open-xchange
app.kubernetes.io/managed-by: Helm
app: public-sector-ui
version: 2.4.0
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['open-xchange-public-sector-ui:80']
restartPolicy: Never
---
# Source: opendesk-open-xchange-bootstrap/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-open-xchange-bootstrap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-open-xchange-bootstrap
helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2
app.kubernetes.io/instance: opendesk-open-xchange-bootstrap
app.kubernetes.io/managed-by: Helm
...
---
# Source: opendesk-open-xchange-bootstrap/templates/role.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "Role"
metadata:
namespace: "yschmidt-opendesk-argo"
name: "opendesk-open-xchange-bootstrap"
rules:
# needed to execute commands inside pod
- apiGroups: [""]
resources:
- "pods"
resourceNames: ["open-xchange-core-mw-default-0"]
verbs: ["get"]
- apiGroups: [""]
resources:
- "pods/exec"
resourceNames: ["open-xchange-core-mw-default-0"]
verbs: ["create"]
# needed to restart stateful set
- apiGroups: ["apps"]
resources:
- "statefulsets"
resourceNames: ["open-xchange-core-mw-default"]
verbs: ["get", "patch"]
...
---
# Source: opendesk-open-xchange-bootstrap/templates/rolebinding.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "RoleBinding"
metadata:
name: "opendesk-open-xchange-bootstrap"
namespace: "yschmidt-opendesk-argo"
roleRef: # points to the ClusterRole
apiGroup: "rbac.authorization.k8s.io"
kind: "Role"
name: "opendesk-open-xchange-bootstrap"
subjects: # points to the ServiceAccount
- kind: "ServiceAccount"
name: "opendesk-open-xchange-bootstrap"
namespace: "yschmidt-opendesk-argo" # ns of service account
...
---
# Source: opendesk-open-xchange-bootstrap/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-open-xchange-bootstrap"
labels:
app.kubernetes.io/name: opendesk-open-xchange-bootstrap
helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2
app.kubernetes.io/instance: opendesk-open-xchange-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
labels:
app.kubernetes.io/name: opendesk-open-xchange-bootstrap
helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2
app.kubernetes.io/instance: opendesk-open-xchange-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
serviceAccountName: "opendesk-open-xchange-bootstrap"
containers:
- name: "opendesk-open-xchange-bootstrap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/alpine/k8s:1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 256Mi
env:
- name: "NAMESPACE"
value: "yschmidt-opendesk-argo"
- name: "CORE_MIDDLEWARE_STATEFULSET"
value: "open-xchange-core-mw-default"
- name: "CORE_MIDDLEWARE_POD"
value: "open-xchange-core-mw-default-0"
command:
- "/bin/bash"
- "-c"
- >
until kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c 'echo core-mw running...';
do
echo "waiting for container core-mw to be alive..."
sleep 1
done
kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c
"mkdir -p /opt/open-xchange/ox-filestore"
kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c
'/opt/open-xchange/sbin/initconfigdb
--configdb-user "${MYSQL_USER}"
--configdb-pass "${MYSQL_PASSWORD}"
--configdb-host "${MYSQL_HOST}"
--mysql-root-passwd "${MYSQL_PASSWORD}"
--configdb-dbname "${MYSQL_DATABASE}"'
|| echo "error initconfigdb"
kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c
'until nc -z localhost 8009; do echo "waiting for port 8009"; sleep 5; done'
kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c
'/opt/open-xchange/sbin/registerfilestore
-A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}"
-t /opt/open-xchange/ox-filestore
-s "100000"'
|| echo "error: registerfilestore"
kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c
'/opt/open-xchange/sbin/registerserver
-A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}"
-n oxserver'
|| echo "error: registerserver"
kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw
-- bash -c
'/opt/open-xchange/sbin/registerdatabase
-A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}"
--name "PRIMARYDB"
--hostname "${MYSQL_HOST}"
--dbuser "${MYSQL_USER}"
--dbpasswd "${MYSQL_PASSWORD}"
--master true'
|| echo "error: registerdatabase"
kubectl --namespace="${NAMESPACE}" rollout restart statefulset ${CORE_MIDDLEWARE_STATEFULSET}
restartPolicy: "Never"
backoffLimit: 4
...
---
# Source: ox-connector/templates/serviceaccount.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH---
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: ox-connector
labels:
app.kubernetes.io/name: ox-connector
helm.sh/chart: ox-connector-0.19.0
app.kubernetes.io/instance: ox-connector
app.kubernetes.io/managed-by: Helm
...
---
# Source: ox-connector/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
type: "Opaque"
metadata:
name: 'ox-connector'
labels:
app.kubernetes.io/name: ox-connector
helm.sh/chart: ox-connector-0.19.0
app.kubernetes.io/instance: ox-connector
app.kubernetes.io/managed-by: Helm
data:
provisioning_api_password: "NWIyNWQyYmUyNjkwZWUzYWNmMzJhNGY5MzAwNmU4MDEwZmY0YmJkMg=="
...
---
# Source: ox-connector/templates/configmap.yaml
apiVersion: v1
data:
DEFAULT_CONTEXT: "1"
DOMAINNAME: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
LOCAL_TIMEZONE: Europe/Berlin
LOG_LEVEL: INFO
MAX_ACKNOWLEDGEMENT_RETRIES: "3"
OX_IMAP_SERVER: imap://127.0.0.1:143
OX_LANGUAGE: de_DE
OX_MASTER_ADMIN: admin
OX_MASTER_PASSWORD: 818f26bf8665480c7e1e2cedfaded285ac1c8b16
OX_SMTP_SERVER: smtp://127.0.0.1:587
OX_SOAP_SERVER: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
PROVISIONING_API_BASE_URL: http://ums-provisioning-api
PROVISIONING_API_USERNAME: ox-connector
wait-for-api.sh: |-
#!/bin/bash
until curl -s ${PROVISIONING_API_BASE_URL} > /dev/null; do
echo "Waiting for API"
sleep 2
done
echo "Success, the Provisioning API is available"
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: ox-connector
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ox-connector
helm.sh/chart: ox-connector-0.19.0
name: ox-connector
...
---
# Source: ox-connector/templates/statefulset.yaml
apiVersion: "apps/v1"
kind: "StatefulSet"
metadata:
name: ox-connector
labels:
app.kubernetes.io/name: ox-connector
helm.sh/chart: ox-connector-0.19.0
app.kubernetes.io/instance: ox-connector
app.kubernetes.io/managed-by: Helm
spec:
serviceName: ox-connector
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: ox-connector
app.kubernetes.io/instance: ox-connector
template:
metadata:
annotations:
checksum/config: 739c01d2384f53e04a3d80abe138614027cffd0847565d475bb2d2658e4d380d
checksum/secret: eac4a64240bb01531210eef0fbd84bc9fb0c2f1ef9b92d596497aaebca845eb7
labels:
app.kubernetes.io/name: ox-connector
app.kubernetes.io/instance: ox-connector
spec:
serviceAccountName: ox-connector
securityContext:
fsGroup: 1000
initContainers:
- name: wait-for-api
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
command: [ "/bin/bash", "/scripts/wait-for-api.sh" ]
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8"
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: ox-connector
volumeMounts:
- name: wait-for-api
mountPath: /scripts
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 64Mi
containers:
- name: ox-connector
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone:0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e"
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: ox-connector
- secretRef:
name: ox-connector
volumeMounts:
- name: ox-connector-ox-contexts
mountPath: /etc/ox-secrets
- name: ox-connector-appcenter
mountPath: /var/lib/univention-appcenter/apps/ox-connector
livenessProbe:
exec:
command:
- /bin/sh
- -c
- |
exit 0
failureThreshold: 3
initialDelaySeconds: 120
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 3
readinessProbe:
exec:
command:
- /bin/sh
- -c
- |
exit 0
failureThreshold: 30
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 3
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 64Mi
volumes:
- name: wait-for-api
configMap:
name: ox-connector
volumeClaimTemplates:
- metadata:
name: ox-connector-ox-contexts
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
- metadata:
name: ox-connector-appcenter
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
...
---
# Source: ox-connector/templates/configmap.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: ox-connector/templates/hpa.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: ox-connector/templates/secret.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: ox-connector/templates/statefulset.yaml
# SPDX-License-Identifier: AGPL-3.0-only
# SPDX-FileCopyrightText: 2023 Univention GmbH
---
# Source: opendesk-nextcloud-management/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: opendesk-nextcloud-management
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
automountServiceAccountToken: false
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-administrator"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "nextcloud"
password: "d132ecf836fac6a43b19341f94d5effff7edee65"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-database"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "nextcloud_user"
password: "0c6b73606d239fe1aba0b3f28ada476e3a58fa2f"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-cache"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "default"
password: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-ldap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
password: "f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-smtp"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
password: "1884bda7fb31c726adcd094399ab63319e9ca56f"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-integration"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "opendesk_username"
password: "1e2eb0fc3815d766ef1be11fb4edba676856ba52"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-oidc"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "opendesk-nextcloud"
password: "9ba1ae31cafd277b67b043234aa0d0fdd53d90b8"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-objectstore"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
username: "nextcloud_user"
password: "cd58fb1bf965a7605e316b394f11ae9c67b3220f"
...
---
# Source: opendesk-nextcloud-management/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-management-serverinfo"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
stringData:
token: "53514b7a8729d5b3a6acdc6295ae3694f19065f9"
...
---
# Source: opendesk-nextcloud-management/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-nextcloud-management-1"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-php
argocd.argoproj.io/hook: "Sync"
argocd.argoproj.io/hook-delete-policy: "BeforeHookCreation"
spec:
backoffLimit: 1
ttlSecondsAfterFinished: 60
template:
metadata:
labels:
app.kubernetes.io/name: opendesk-nextcloud-management
helm.sh/chart: opendesk-nextcloud-management-4.0.3
app.kubernetes.io/instance: opendesk-nextcloud-management
app.kubernetes.io/managed-by: Helm
annotations:
checksum/configmap: 5d8dc088de425e524012e21c06f0156608519f8e0110dfa15567545d77fc6677
intents.otterize.com/service-name: opendesk-nextcloud-php
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: opendesk-nextcloud-management
restartPolicy: Never
containers:
- name: "init"
command:
- "/usr/bin/php"
- "/usr/local/bin/entrypoint/entrypoint.php"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4"
imagePullPolicy: IfNotPresent
env:
- name: "FS_ENV_SUBSCRIPTION_KEY"
value:
- name: "FS_ENV_DEFAULT_QUOTA"
value: "1 GB"
- name: "FS_ENV_RETENTION_OBLIGATION_VERSIONS"
value: "auto"
- name: "FS_ENV_RETENTION_OBLIGATION_TRASHBIN"
value: "auto"
- name: "FS_ENV_DEV_MODE"
value: "false"
- name: "FS_ENV_RUN_MODE"
value: "init"
- name: "FS_ENV_LOGLEVEL"
value: "2"
- name: "FS_ENV_DBTYPE"
value: "pgsql"
- name: "FS_ENV_DBHOST"
value: "postgresql"
- name: "FS_ENV_DBNAME"
value: "nextcloud"
- name: "FS_ENV_DBPORT"
value: "5432"
- name: "FS_ENV_DBUSER"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-database"
key: "username"
- name: "FS_ENV_DBPASSWORD"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-database"
key: "password"
- name: "FS_ENV_NCADMINNAME"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-administrator"
key: "username"
- name: "FS_ENV_NCADMINPASS"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-administrator"
key: "password"
- name: "FS_ENV_REDIS_HOST"
value: "redis-headless"
- name: "FS_ENV_REDIS_PORT"
value: "6379"
- name: "FS_ENV_REDIS_TIMEOUT"
value: "30"
- name: "FS_ENV_REDIS_DBINDEX"
value: "4"
- name: "FS_ENV_PHP_REDIS_DBINDEX"
value: "5"
- name: "FS_ENV_REDIS_USER"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-cache"
key: "username"
- name: "FS_ENV_REDIS_PASSWORD"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-cache"
key: "password"
- name: "FS_ENV_REDIS_TLS_ENABLED"
value: "false"
- name: "FS_ENV_MAIL_SMTPAUTH"
value: "true"
- name: "FS_ENV_MAIL_SMTPNAME"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-smtp"
key: "username"
- name: "FS_ENV_MAIL_SMTPPASSWORD"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-smtp"
key: "password"
- name: "FS_ENV_MAIL_SMTPAUTHTYPE"
value: "LOGIN"
- name: "FS_ENV_MAIL_SMTPMODE"
value: "smtp"
- name: "FS_ENV_MAIL_SMTPSECURE"
value: "tls"
- name: "FS_ENV_MAIL_SMTPHOST"
value: "postfix.yschmidt-opendesk-argo.svc.cluster.local"
- name: "FS_ENV_MAIL_SMTPPORT"
value: "587"
- name: "FS_ENV_MAIL_DOMAIN"
value: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_MAIL_FROM_ADDRESS"
value: "no-reply"
- name: "FS_ENV_MAIL_SMTPVERIFYPEER"
value: "true"
- name: "FS_ENV_PORTAL_URL"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_LOGO_URL"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg"
- name: "FS_ENV_WEBMAIL_URL"
value: "https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_PORTAL_JSON_USERNAME_ATTRIBUTE"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-integration"
key: "username"
- name: "FS_ENV_PORTAL_SECRET"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-integration"
key: "password"
- name: "FS_ENV_PORTAL_NAVIGATION_JSON_URL"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json"
- name: "FS_ENV_PORTAL_AUTH_METHOD"
value: "basic"
- name: "FS_ENV_PORTAL_MENU_TABNAME"
value: "target"
- name: "FS_ENV_OIDC_CLIENT_ID"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-oidc"
key: "username"
- name: "FS_ENV_OIDC_CLIENT_SECRET"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-oidc"
key: "password"
- name: "FS_ENV_OIDC_DISCOVERY_URI"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/.well-known/openid-configuration"
- name: "FS_ENV_OIDC_MAPPING_UID"
value: "opendesk_useruuid"
- name: "FS_ENV_LDAP"
value: "ewogICJsZGFwQWdlbnROYW1lIjogInVpZD1sZGFwc2VhcmNoX25leHRjbG91ZCxjbj11c2VycyxkYz1zd3AtbGRhcCxkYz1pbnRlcm5hbCIsCiAgImxkYXBCYXNlIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEJhc2VHcm91cHMiOiAiZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwiLAogICJsZGFwQmFzZVVzZXJzIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEhvc3QiOiAibGRhcDovL3Vtcy1sZGFwLXNlcnZlciIsCiAgImxkYXBQb3J0IjogIjM4OSIsCiAgImxkYXBBZG1pbkdyb3VwIjogIm1hbmFnZWQtYnktYXR0cmlidXRlLUZpbGVzaGFyZUFkbWluIiwKICAibGRhcEdyb3VwRGlzcGxheU5hbWUiOiAiY24iLAogICJsZGFwR3JvdXBGaWx0ZXIiOiAiJygmKG9iamVjdENsYXNzPW9wZW5kZXNrRmlsZXNoYXJlR3JvdXApKG9wZW5kZXNrRmlsZXNoYXJlRW5hYmxlZD1UUlVFKSknIiwKICAibGRhcEdyb3VwRmlsdGVyT2JqZWN0Y2xhc3MiOiAib3BlbmRlc2tGaWxlc2hhcmVHcm91cCIsCiAgImxkYXBMb2dpbkZpbHRlciI6ICInKCYob3BlbmRlc2tGaWxlc2hhcmVFbmFibGVkPVRSVUUpKGVudHJ5VVVJRD0ldWlkKSknIiwKICAibGRhcFVzZXJGaWx0ZXIiOiAiJyhvcGVuZGVza0ZpbGVzaGFyZUVuYWJsZWQ9VFJVRSknIiwKICAibGRhcFVzZXJGaWx0ZXJPYmplY3RjbGFzcyI6ICJvcGVuZGVza0ZpbGVzaGFyZVVzZXIiCn0K"
- name: "FS_ENV_LDAP_AGENT_PASSWORD"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-ldap"
key: "password"
- name: "FS_ENV_ANTIVIRUS_ICAP_HOST"
value: "clamav-simple"
- name: "FS_ENV_ANTIVIRUS_ICAP_PORT"
value: "1344"
- name: "FS_ENV_ANTIVIRUS_ICAP_SERVICE"
value: "avscan"
- name: "FS_ENV_ANTIVIRUS_ICAP_HEADER"
value: "X-Infection-Found"
- name: "FS_ENV_ANTIVIRUS_ICAP_MODE"
value: "reqmod"
- name: "FS_ENV_ANTIVIRUS_ICAP_CHUNK_SIZE"
value: "1048576"
- name: "FS_ENV_ANTIVIRUS_ACTION"
value: "delete"
- name: "FS_ENV_CRYPTPAD_HOST"
value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_MONITORING_TOKEN"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-serverinfo"
key: "token"
- name: "FS_ENV_OBJECTSTORE_BUCKET"
value: "nextcloud"
- name: "FS_ENV_OBJECTSTORE_HOST"
value: "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_OBJECTSTORE_ACCESS_KEY"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-objectstore"
key: "username"
- name: "FS_ENV_OBJECTSTORE_SECRET_KEY"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-management-objectstore"
key: "password"
- name: "FS_ENV_OBJECTSTORE_PORT"
value: "443"
- name: "FS_ENV_OBJECTSTORE_PATH_STYLE"
value: "true"
- name: "FS_ENV_OBJECTSTORE_USE_SSL"
value: "true"
- name: "FS_ENV_OBJECTSTORE_REGION"
value: "eu-west-1"
- name: "FS_ENV_OBJECTSTORE_STORAGE_CLASS"
value: "STANDARD"
- name: "FS_ENV_WOPI_ALLOWLIST"
value: "10.0.0.0/8"
- name: "FS_ENV_INTERNAL_WOPI_URL"
value: "https://office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_PUBLIC_WOPI_URL"
value: "https://office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_TRUSTED_DOMAINS"
value: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "FS_ENV_TRUSTED_PROXIES"
value: "127.0.0.1"
- name: "FS_ENV_THEMING_COLOR"
value: "#571EFA"
- name: "FS_ENV_THEMING_PRODUCTNAME"
value: "openDesk"
- name: "FS_ENV_NCADMINENABLED"
value: "true"
- name: "FS_ENV_SHAREAPI_ALLOW_LINKS"
value: "false"
- name: "FS_ENV_SHAREAPI_ALLOW_MAIL_NOTIFICATION"
value: "false"
- name: "FS_ENV_SHAREAPI_ALLOW_PUBLIC_UPLOAD"
value: "false"
- name: "FS_ENV_SHAREAPI_DEFAULT_INTERNAL_EXPIRE_DATE"
value: "false"
- name: "FS_ENV_SHAREAPI_ENFORCE_INTERNAL_EXPIRE_DATE"
value: "false"
- name: "FS_ENV_SHAREAPI_INTERNAL_EXPIRE_AFTER_N_DAYS"
value: "90"
- name: "FS_ENV_SHAREAPI_DEFAULT_EXPIRE_DATE"
value: "true"
- name: "FS_ENV_SHAREAPI_ENFORCE_EXPIRE_DATE"
value: "false"
- name: "FS_ENV_SHAREAPI_EXPIRE_AFTER_N_DAYS"
value: "30"
- name: "FS_ENV_SHAREAPI_ENFORCE_LINKS_PASSWORD"
value: "false"
- name: "FS_ENV_SHAREBYMAIL_ENFORCE_PASSWORD_PROTECTION"
value: "false"
- name: "FS_ENV_SHAREBYMAIL_SEND_PASSWORD_MAIL"
value: "true"
- name: "FS_ENV_DAV_SYSTEM_ADDRESSBOOK_EXPOSED"
value: "true"
- name: "FS_ENV_FEATURE_CIRCLES_ENABLED"
value: "false"
- name: "FS_ENV_FEATURE_BRUTE_FORCE_PROTECTION_ENABLED"
value: "true"
- name: "FS_ENV_FEATURE_FEDERATION_ENABLED"
value: "false"
- name: "FS_ENV_FEATURE_APPS_CONTACTS_ENABLED"
value: "false"
- name: "FS_ENV_FEATURE_APPS_FILES_ZIP_ENABLED"
value: "true"
- name: "FS_ENV_FEATURE_APPS_GROUPFOLDERS_ENABLED"
value: "true"
- name: "FS_ENV_FEATURE_APPS_INTEGRATION_OPENPROJECT_ENABLED"
value: "true"
- name: "FS_ENV_FEATURE_APPS_SPREED_ENABLED"
value: "true"
- name: "FS_ENV_CREATE_OCDATA"
value: "true"
- name: "FS_ENV_INTEGRATION_OXAPPSUITE_ENABLED"
value: "true"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: "nextcloud-data"
mountPath: "/var/nextcloud/data"
- name: "nextcloud-config"
mountPath: "/var/www/html/config"
- name: "nextcloud-tmp"
mountPath: "/tmp"
volumes:
- name: "nextcloud-data"
emptyDir: {}
- name: "nextcloud-tmp"
emptyDir: {}
- name: "nextcloud-config"
emptyDir: {}
...
---
# Source: opendesk-nextcloud/charts/aio/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: opendesk-nextcloud-aio
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
automountServiceAccountToken: false
...
---
# Source: opendesk-nextcloud/charts/exporter/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: opendesk-nextcloud-exporter
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: exporter
helm.sh/chart: exporter-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-exporter
automountServiceAccountToken: false
...
---
# Source: opendesk-nextcloud/charts/aio/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-aio-database"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
stringData:
username: "nextcloud_user"
password: "0c6b73606d239fe1aba0b3f28ada476e3a58fa2f"
...
---
# Source: opendesk-nextcloud/charts/aio/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-aio-cache"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
stringData:
username: "default"
password: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e"
...
---
# Source: opendesk-nextcloud/charts/exporter/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-nextcloud-exporter"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: exporter
helm.sh/chart: exporter-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-exporter
stringData:
token: "53514b7a8729d5b3a6acdc6295ae3694f19065f9"
...
---
# Source: opendesk-nextcloud/charts/aio/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-nextcloud-aio"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
- name: "php"
port: 9000
targetPort: "php"
protocol: "TCP"
- name: "status"
port: 8081
targetPort: "status"
protocol: "TCP"
selector:
app.kubernetes.io/name: aio
app.kubernetes.io/instance: opendesk-nextcloud
...
---
# Source: opendesk-nextcloud/charts/exporter/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-nextcloud-exporter"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: exporter
helm.sh/chart: exporter-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-exporter
spec:
type: "ClusterIP"
ports:
- name: "metrics"
port: 9205
targetPort: "metrics"
protocol: "TCP"
selector:
app.kubernetes.io/name: exporter
app.kubernetes.io/instance: opendesk-nextcloud
...
---
# Source: opendesk-nextcloud/charts/aio/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: "opendesk-nextcloud-aio"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: aio
app.kubernetes.io/instance: opendesk-nextcloud
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: ff97dbd165e5b2e6a036e8e945fc5e5518db6b37e3966fea0a1c363f8085a3fb
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: opendesk-nextcloud-aio
containers:
- name: "aio"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4"
imagePullPolicy: IfNotPresent
env:
- name: "FS_ENV_OVERWRITE_PROTOCOL"
value: "https"
- name: "FS_ENV_TRUSTED_PROXIES"
value: "10.0.0.0/8"
- name: "FS_ENV_RUN_MODE"
value: "runtime"
- name: "FS_ENV_DBTYPE"
value: "pgsql"
- name: "FS_ENV_DBHOST"
value: "postgresql"
- name: "FS_ENV_DBNAME"
value: "nextcloud"
- name: "FS_ENV_DBPORT"
value: "5432"
- name: "FS_ENV_DBUSER"
valueFrom:
secretKeyRef:
name: opendesk-nextcloud-aio-database
key: username
- name: "FS_ENV_DBPASSWORD"
valueFrom:
secretKeyRef:
name: opendesk-nextcloud-aio-database
key: password
- name: "FS_ENV_REDIS_HOST"
value: "redis-headless"
- name: "FS_ENV_REDIS_PORT"
value: "6379"
- name: "FS_ENV_REDIS_TIMEOUT"
value: "30"
- name: "FS_ENV_REDIS_DBINDEX"
value: "4"
- name: "FS_ENV_PHP_REDIS_DBINDEX"
value: "5"
- name: "FS_ENV_REDIS_USER"
valueFrom:
secretKeyRef:
name: opendesk-nextcloud-aio-cache
key: username
- name: "FS_ENV_REDIS_PASSWORD"
valueFrom:
secretKeyRef:
name: opendesk-nextcloud-aio-cache
key: password
- name: "FS_ENV_REDIS_TLS_ENABLED"
value: "false"
- name: "FS_ENV_CREATE_OCDATA"
value: "true"
- name: "FS_ENV_TRUSTED_DOMAINS"
value: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
livenessProbe:
httpGet:
path: "/health"
port: 8081
httpHeaders:
- name: "Host"
value: "localhost"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 2
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: "/health"
port: 8081
httpHeaders:
- name: "Host"
value: "localhost"
initialDelaySeconds: 1
periodSeconds: 1
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
startupProbe:
httpGet:
path: "/health"
port: 8081
httpHeaders:
- name: "Host"
value: "localhost"
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: php
containerPort: 9000
protocol: TCP
- name: status
containerPort: 8081
protocol: TCP
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: "nextcloud-config"
mountPath: "/var/www/html/config"
- name: "nextcloud-data"
mountPath: "/var/nextcloud/data"
- name: "nextcloud-tmp"
mountPath: "/tmp"
- name: "nginx-config"
mountPath: "/etc/nginx/conf.d"
- name: "nginx-tmp"
mountPath: "/var/cache/nginx/"
- name: "run"
mountPath: "/var/run/"
volumes:
- name: "nextcloud-data"
emptyDir: {}
- name: "nextcloud-tmp"
emptyDir: {}
- name: "nginx-tmp"
emptyDir: {}
- name: "run"
emptyDir: {}
- name: "nextcloud-config"
emptyDir:
medium: "Memory"
sizeLimit: "5Mi"
- name: "nginx-config"
emptyDir:
medium: "Memory"
sizeLimit: "5Mi"
...
---
# Source: opendesk-nextcloud/charts/exporter/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: "opendesk-nextcloud-exporter"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: exporter
helm.sh/chart: exporter-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-exporter
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: exporter
app.kubernetes.io/instance: opendesk-nextcloud
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 10de92135dcd0e95bbf37a6366bb4b4ddc721b3e87fcea1d926e929af485c573
labels:
app.kubernetes.io/name: exporter
helm.sh/chart: exporter-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 65532
fsGroupChangePolicy: Always
serviceAccountName: opendesk-nextcloud-exporter
containers:
- name: "exporter"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 65532
runAsNonRoot: true
runAsUser: 65532
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter:1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0"
imagePullPolicy: IfNotPresent
env:
- name: "NEXTCLOUD_TIMEOUT"
value: "5s"
- name: "NEXTCLOUD_TLS_SKIP_VERIFY"
value: "false"
- name: "NEXTCLOUD_AUTH_TOKEN"
valueFrom:
secretKeyRef:
name: opendesk-nextcloud-exporter
key: token
- name: "NEXTCLOUD_SERVER"
value: "http://opendesk-nextcloud-aio"
livenessProbe:
tcpSocket:
port: 9205
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 2
failureThreshold: 3
successThreshold: 1
readinessProbe:
tcpSocket:
port: 9205
initialDelaySeconds: 1
periodSeconds: 1
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
startupProbe:
tcpSocket:
port: 9205
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: metrics
containerPort: 9205
protocol: TCP
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
volumes:
...
---
# Source: opendesk-nextcloud/charts/aio/templates/cron-job.yaml
apiVersion: "batch/v1"
kind: "CronJob"
metadata:
name: "opendesk-nextcloud-aio-cron"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: "Forbid"
successfulJobsHistoryLimit: 0
failedJobsHistoryLimit: 1
jobTemplate:
spec:
ttlSecondsAfterFinished: 180
activeDeadlineSeconds: 600
template:
metadata:
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
checksum/configmap: ff97dbd165e5b2e6a036e8e945fc5e5518db6b37e3966fea0a1c363f8085a3fb
intents.otterize.com/service-name: opendesk-nextcloud-aio
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: opendesk-nextcloud-aio
restartPolicy: Never
containers:
- name: "cron"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4"
command:
- "/usr/bin/php"
- "/usr/local/bin/entrypoint/entrypoint.php"
imagePullPolicy: IfNotPresent
env:
- name: "FS_ENV_RUN_MODE"
value: "cron"
- name: "FS_ENV_CRON_PHP_MEMORY_LIMIT"
value: "1G"
- name: "FS_ENV_DBTYPE"
value: "pgsql"
- name: "FS_ENV_DBHOST"
value: "postgresql"
- name: "FS_ENV_DBNAME"
value: "nextcloud"
- name: "FS_ENV_DBPORT"
value: "5432"
- name: "FS_ENV_DBUSER"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-aio-database"
key: "username"
- name: "FS_ENV_DBPASSWORD"
valueFrom:
secretKeyRef:
name: "opendesk-nextcloud-aio-database"
key: "password"
- name: "FS_ENV_CREATE_OCDATA"
value: "true"
resources:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: "nextcloud-config"
mountPath: "/var/www/html/config"
- name: "nextcloud-data"
mountPath: "/var/nextcloud/data"
- name: "nextcloud-tmp"
mountPath: "/tmp"
volumes:
- name: "nextcloud-data"
emptyDir: {}
- name: "nextcloud-tmp"
emptyDir: {}
- name: "nextcloud-config"
emptyDir:
medium: "Memory"
sizeLimit: "5Mi"
...
---
# Source: opendesk-nextcloud/charts/aio/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-nextcloud-aio"
labels:
app.kubernetes.io/name: aio
helm.sh/chart: aio-4.0.2
app.kubernetes.io/instance: opendesk-nextcloud
app.kubernetes.io/managed-by: Helm
annotations:
intents.otterize.com/service-name: opendesk-nextcloud-aio
nginx.ingress.kubernetes.io/proxy-body-size: 100M
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.org/client-max-body-size: 100M
nginx.org/proxy-read-timeout: 600s
nginx.org/proxy-send-timeout: 600s
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: opendesk-nextcloud-aio
port:
name: http
...
---
# Source: collabora-online/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: collabora
labels:
helm.sh/chart: collabora-online-1.1.37
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
app.kubernetes.io/version: "24.04.13.3.1"
app.kubernetes.io/managed-by: Helm
---
# Source: collabora-online/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: collabora
labels:
helm.sh/chart: collabora-online-1.1.37
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
app.kubernetes.io/version: "24.04.13.3.1"
app.kubernetes.io/managed-by: Helm
data:
username: Y29sbGFib3JhLWludGVybmFsLWFkbWlu
password: MWYxODAyODk1NDM2ODY1MmFhNzBjNTQ5OGE1MmYxOTRlNzIxYjE0NQ==
---
# Source: collabora-online/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: collabora
annotations:
confighash: config-acf7fcfbc47208034cd636e2a5b93730
labels:
helm.sh/chart: collabora-online-1.1.37
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
app.kubernetes.io/version: "24.04.13.3.1"
app.kubernetes.io/managed-by: Helm
data:
extra_params: --o:ssl.enable=false --o:ssl.termination=true --o:fetch_update_check=0 --o:num_prespawn_children=4 --o:remote_font_config.url=https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/apps/richdocuments/settings/fonts.json --o:net.proto=all --o:logging.anonymize.anonymize_user_data=true
aliasgroup1: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
---
# Source: collabora-online/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: collabora
labels:
helm.sh/chart: collabora-online-1.1.37
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
app.kubernetes.io/version: "24.04.13.3.1"
app.kubernetes.io/managed-by: Helm
type: main
spec:
type: ClusterIP
ports:
- port: 9980
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
type: main
---
# Source: collabora-online/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: collabora
labels:
helm.sh/chart: collabora-online-1.1.37
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
app.kubernetes.io/version: "24.04.13.3.1"
app.kubernetes.io/managed-by: Helm
spec:
minReadySeconds: 0
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
type: main
template:
metadata:
annotations:
confighash: config-acf7fcfbc47208034cd636e2a5b93730
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
labels:
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
type: main
spec:
terminationGracePeriodSeconds: 60
serviceAccountName: collabora
securityContext:
fsGroup: 1001
containers:
- name: collabora-online
securityContext:
allowPrivilegeEscalation: true
capabilities:
add:
- CHOWN
- FOWNER
- SYS_CHROOT
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk:24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f"
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 9980
protocol: TCP
startupProbe:
httpGet:
path: /
port: 9980
scheme: HTTP
failureThreshold: 30
periodSeconds: 3
livenessProbe:
httpGet:
path: /
port: 9980
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 30
successThreshold: 1
failureThreshold: 4
readinessProbe:
httpGet:
path: /
port: 9980
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 30
successThreshold: 1
failureThreshold: 2
envFrom:
- configMapRef:
name: collabora
env:
- name: username
valueFrom:
secretKeyRef:
name: collabora
key: username
- name: password
valueFrom:
secretKeyRef:
name: collabora
key: password
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 512Mi
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
---
# Source: collabora-online/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: collabora
labels:
helm.sh/chart: collabora-online-1.1.37
app.kubernetes.io/name: collabora-online
app.kubernetes.io/instance: collabora-online
app.kubernetes.io/version: "24.04.13.3.1"
app.kubernetes.io/managed-by: Helm
annotations:
haproxy-ingress.github.io/balance-algorithm: url_param WOPISrc check_post
haproxy-ingress.github.io/config-backend: |
hash-type consistent
# block admin urls from outside
acl admin_url path_beg /cool/getMetrics
acl admin_url path_beg /cool/adminws/
acl admin_url path_beg /browser/dist/admin/admin.html
http-request deny if admin_url
haproxy-ingress.github.io/timeout-tunnel: 600s
haproxy.org/backend-config-snippet: |
balance url_param WOPISrc check_post
hash-type consistent
haproxy.org/timeout-tunnel: 600s
nginx.ingress.kubernetes.io/proxy-body-size: 100M
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/server-snippet: |
# block admin and metrics endpoint from outside by default
location /cool/getMetrics { deny all; return 403; }
location /cool/adminws/ { deny all; return 403; }
location /browser/dist/admin/admin.html { deny all; return 403; }
nginx.ingress.kubernetes.io/upstream-hash-by: $arg_WOPISrc
nginx.org/client-max-body-size: 100M
nginx.org/lb-method: hash $arg_WOPISrc consistent
nginx.org/proxy-read-timeout: 600s
nginx.org/proxy-send-timeout: 600s
nginx.org/server-snippets: |
# block admin and metrics endpoint from outside by default
location /cool/getMetrics { deny all; return 403; }
location /cool/adminws/ { deny all; return 403; }
location /browser/dist/admin/admin.html { deny all; return 403; }
nginx.org/websocket-services: collabora
spec:
ingressClassName: nginx
tls:
- hosts:
- "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: collabora
port:
number: 9980
---
# Source: cryptpad/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: cryptpad
labels:
helm.sh/chart: cryptpad-0.0.20
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
app.kubernetes.io/managed-by: Helm
---
# Source: cryptpad/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: cryptpad
labels:
helm.sh/chart: cryptpad-0.0.20
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
app.kubernetes.io/managed-by: Helm
data:
config.js: |
/* globals module */
module.exports = {
httpUnsafeOrigin: 'https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de',
httpSafeOrigin: 'https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de',
adminKeys: [],
archivePath: "./data/archive",
blobPath: "./blob",
blobStagingPath: "./data/blobstage",
blockPath: "./block",
decreePath: "./data/decrees",
filePath: "./datastore/",
httpAddress: "0.0.0.0",
installMethod: "helm-docker",
logFeedback: "false",
logLevel: "info",
logPath: "./data/logs",
logToStdout: "false",
pinPath: "./data/pins",
taskPath: "./data/tasks",
verbose: "false",
};
application_config.js: |
/*
* You can override the configurable values from this file.
* The recommended method is to make a copy of this file (/customize.dist/application_config.js)
in a 'customize' directory (/customize/application_config.js).
* If you want to check all the configurable values, you can open the internal configuration file
but you should not change it directly (/common/application_config_internal.js)
*/
define(['/common/application_config_internal.js'], function (AppConfig) {
AppConfig.availablePadTypes = ["diagram"];
return AppConfig;
});
---
# Source: cryptpad/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: cryptpad
labels:
helm.sh/chart: cryptpad-0.0.20
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
- port: 83
targetPort: ws
protocol: TCP
name: ws
sessionAffinity: ClientIP
selector:
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
---
# Source: cryptpad/templates/cryptpad.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: cryptpad
labels:
helm.sh/chart: cryptpad-0.0.20
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
template:
metadata:
annotations:
checksum/configmap: befacf9ece1dd46940ff5e5118bea194b0f5878d37b80fbc85cebb087d9dc317
labels:
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
spec:
serviceAccountName: cryptpad
securityContext:
fsGroup: 4001
initContainers:
- name: init-cryptpad
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 4001
runAsNonRoot: true
runAsUser: 4001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17"
imagePullPolicy: IfNotPresent
command: ['/bin/sh', '-c']
volumeMounts:
- name: cryptpad-data
mountPath: /cryptpad/data
args:
- |
FILE=/cryptpad/data/decrees/decree.ndjson
mkdir -p /cryptpad/data/decrees
VALUE='["ENABLE_EMBEDDING", [true], "", 0]'
if [ -f $FILE ] && [ $(grep -c "ENABLE_EMBEDDING" $FILE) -gt 0 ]
then
sed -i "s|.*ENABLE_EMBEDDING.*|$VALUE|g" "$FILE"
else
echo "$VALUE" >> "$FILE"
fi
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
containers:
- name: cryptpad
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 4001
runAsNonRoot: true
runAsUser: 4001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17"
imagePullPolicy: IfNotPresent
env:
- name: CPAD_MAIN_DOMAIN
value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: CPAD_SANDBOX_DOMAIN
value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: CPAD_CONF
value: "/cryptpad/config/config.js"
ports:
- name: http
containerPort: 3000
protocol: TCP
- name: ws
containerPort: 3003
protocol: TCP
startupProbe:
tcpSocket:
port: 3000
initialDelaySeconds: 0
timeoutSeconds: 1
periodSeconds: 10
failureThreshold: 5
successThreshold: 1
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 0
timeoutSeconds: 1
periodSeconds: 10
failureThreshold: 5
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 0
timeoutSeconds: 1
periodSeconds: 10
failureThreshold: 5
successThreshold: 1
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: cryptpad-blob
mountPath: /cryptpad/blob
- name: cryptpad-block
mountPath: /cryptpad/block
- name: cryptpad-data
mountPath: /cryptpad/data
- name: cryptpad-datastore
mountPath: /cryptpad/datastore
- name: configmaps
mountPath: /cryptpad/config/config.js
subPath: config.js
- name: configmaps
mountPath: /cryptpad/customize/application_config.js
subPath: application_config.js
volumes:
- name: configmaps
configMap:
name: cryptpad
- name: cryptpad-blob
emptyDir: {}
- name: cryptpad-block
emptyDir: {}
- name: cryptpad-data
emptyDir: {}
- name: cryptpad-datastore
emptyDir: {}
---
# Source: cryptpad/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cryptpad
labels:
helm.sh/chart: cryptpad-0.0.20
app.kubernetes.io/name: cryptpad
app.kubernetes.io/instance: cryptpad
app.kubernetes.io/managed-by: Helm
annotations:
nginx.org/websocket-services: cryptpad
spec:
ingressClassName: nginx
tls:
- hosts:
- "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: cryptpad
port:
number: 80
- path: /cryptpad_websocket
pathType: ImplementationSpecific
backend:
service:
name: cryptpad
port:
number: 83
---
# Source: opendesk-element/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-element"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: opendesk-element/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-element"
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
data:
config.json: |-
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
}
},
"sso_redirect_options": {
"on_welcome_page": true
},
"jitsi": {
"preferred_domain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
},
"jitsi_widget": {
"skip_built_in_welcome_screen": true
},
"permalink_prefix": "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de",
"default_federate": false,
"disable_custom_urls": true,
"integrations_ui_url": "",
"integrations_rest_url": "",
"integrations_widgets_urls": [],
"features": {
"feature_rust_crypto": true,
"feature_video_rooms": false,
"feature_ask_to_join": true
},
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
},
"setting_defaults": {
"UIFeature.feedback": false,
"UIFeature.advancedSettings": false,
"UIFeature.shareQrCode": false,
"UIFeature.shareSocial": false,
"UIFeature.identityServer": false,
"UIFeature.thirdPartyId": false,
"UIFeature.registration": false,
"UIFeature.passwordReset": false,
"UIFeature.deactivate": false,
"UIFeature.advancedEncryption": false,
"UIFeature.roomHistorySettings": false,
"MessageComposerInput.showStickersButton": false,
"breadcrumbs": false,
"fallbackICEServerAllowed": false
},
"default_theme": "light",
"brand": "Chat - openDesk",
"custom_translations_url": "/custom-translations.json",
"embeddedPages": {
"homeUrl": "/custom-home.html"
},
"net.nordeck.element_web.module.widget_toggles": {
"config": {
"types": [
"jitsi",
"net.nordeck"
]
}
},
"net.nordeck.element_web.module.guest": {
"config": {
"guest_user_homeserver_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
}
},
"logout_redirect_url":"https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout?client_id=opendesk-matrix\u0026post_logout_redirect_uri=https%3A%2F%2Fportal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de","net.nordeck.element_web.module.opendesk":{"config":{"banner":{"ics_navigation_json_url":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/navigation.json","ics_silent_url":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/silent","portal_logo_svg_url":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg","portal_url":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/"},"custom_css_variables":{"--cpd-color-bg-action-primary-rest":"#571EFA","--cpd-color-text-action-accent":"#571EFA"}}},"net.nordeck.element_web.module.widget_lifecycle":{"widget_permissions":{"https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/jitsi.html":{"identity_approved":true},"https://matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"capabilities_approved":["org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.create","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.create","org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.chunk","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.chunk","org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.snapshot","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.snapshot","org.matrix.msc2762.send.state_event:m.room.power_levels#","org.matrix.msc2762.receive.state_event:m.room.power_levels#","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.send.state_event:net.nordeck.whiteboard","org.matrix.msc2762.receive.state_event:net.nordeck.whiteboard","org.matrix.msc2762.send.state_event:net.nordeck.whiteboard.sessions#*","org.matrix.msc2762.receive.state_event:net.nordeck.whiteboard.sessions","org.matrix.msc3819.send.to_device:net.nordeck.whiteboard.connection_signaling","org.matrix.msc3819.receive.to_device:net.nordeck.whiteboard.connection_signaling","town.robin.msc3846.turn_servers","org.matrix.msc4039.upload_file","org.matrix.msc4039.download_file"],"preload_approved":true},"https://matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"capabilities_approved":["org.matrix.msc2762.send.event:net.nordeck.poll.vote","org.matrix.msc2762.receive.event:net.nordeck.poll.vote","org.matrix.msc2762.send.state_event:net.nordeck.poll","org.matrix.msc2762.receive.state_event:net.nordeck.poll","org.matrix.msc2762.send.state_event:net.nordeck.poll.settings","org.matrix.msc2762.receive.state_event:net.nordeck.poll.settings","org.matrix.msc2762.receive.state_event:m.room.power_levels","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.send.state_event:net.nordeck.poll.group","org.matrix.msc2762.receive.state_event:net.nordeck.poll.group","org.matrix.msc2762.send.event:net.nordeck.poll.start","org.matrix.msc2762.receive.event:net.nordeck.poll.start"],"preload_approved":true},"https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"capabilities_approved":["org.matrix.msc2931.navigate","org.matrix.msc2762.timeline:*","org.matrix.msc2762.receive.state_event:m.room.power_levels","org.matrix.msc2762.receive.event:m.reaction","org.matrix.msc2762.receive.state_event:m.room.create","org.matrix.msc2762.receive.state_event:m.room.tombstone","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.send.state_event:m.room.member","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.receive.state_event:m.room.topic","org.matrix.msc2762.receive.state_event:m.space.parent","org.matrix.msc2762.receive.state_event:m.space.child","org.matrix.msc2762.receive.state_event:net.nordeck.meetings.metadata","org.matrix.msc2762.receive.state_event:im.vector.modular.widgets","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.create","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.create","org.matrix.msc2762.send.event:net.nordeck.meetings.breakoutsessions.create","org.matrix.msc2762.receive.event:net.nordeck.meetings.breakoutsessions.create","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.close","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.close","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.widgets.handle","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.widgets.handle","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.participants.handle","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.participants.handle","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.update","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.update","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.change.message_permissions","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.change.message_permissions","org.matrix.msc2762.send.event:net.nordeck.meetings.sub_meetings.send_message","org.matrix.msc2762.receive.event:net.nordeck.meetings.sub_meetings.send_message","org.matrix.msc3973.user_directory_search"],"identity_approved":true,"preload_approved":true}}},
"dummy_end": "placeholder"
}
custom-home.html: |-
Willkommen
Terminplaner öffnen
custom-translations.json: |-
{
"power_level|default": {
"de": "Teilnehmer*in",
"en": "Participant"
},
"power_level|moderator": {
"de": "Assistent*in",
"en": "Assistant"
},
"power_level|mod": {
"de": "Assistent*in",
"en": "Assistant"
},
"power_level|admin": {
"de": "Moderator*in",
"en": "Moderator"
},
"room|header|n_people_asking_to_join": {
"de": {
"one": "Möchte beitreten",
"other": "%(count)s Personen möchten beitreten"
},
"en": {
"one": "Asking to join",
"other": "%(count)s people asking to join"
}
},
"room|knock_denied_subtitle": {
"de": "Da deine Beitrittsanfrage abgelehnt wurde, bitten wir um Geduld, bis du eine Einladung vom Administrator oder Moderator erhältst.",
"en": "As you have been denied access, you cannot rejoin unless you are invited by the admin or moderator of the group."
},
"room|knock_denied_title": {
"de": "Deine Beitrittsanfrage wurde abgelehnt",
"en": "You have been denied access"
},
"room_settings|security|publish_room": {
"de": "Diesen Raum im Raumverzeichnis veröffentlichen.",
"en": "Make this room visible in the public room directory."
}
}
---
# Source: opendesk-element/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-element-nginx"
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
data:
nginx.conf: |-
worker_processes auto;
error_log stderr warn;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
include /etc/nginx/mime.types;
default_type application/octet-stream;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
server {
listen 8080;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Robots-Tag "noindex, nofollow, noarchive, noimageindex";
location / {
root /usr/share/nginx/html;
index index.html index.htm;
charset utf-8;
}
location = /health {
allow all;
default_type 'application/json';
return 200 '{"status": "ok"}';
}
}
}
...
---
# Source: opendesk-element/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-element"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "element"
port: 8080
targetPort: 8080
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-element
app.kubernetes.io/instance: opendesk-element
...
---
# Source: opendesk-element/templates/deployment.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "opendesk-element"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "clamd"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: opendesk-element
app.kubernetes.io/instance: opendesk-element
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: f02bdecaabb0dda8c51db14f7561c1c30eba253577adf829ee6cab07adffe33b
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app.kubernetes.io/name"
operator: "In"
values:
- "opendesk-element"
topologyKey: "kubernetes.io/hostname"
securityContext:
fsGroup: 101
serviceAccountName: opendesk-element
terminationGracePeriodSeconds: 30
initContainers:
- name: "copy-modules"
command:
- cp
- -r
- /tmp/element-web-modules
- /mnt/tmp/element-web-modules
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1"
imagePullPolicy: IfNotPresent
env:
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "tmp"
mountPath: "/mnt/tmp"
- name: "init-element"
command:
- /bin/sh
- -c
- |
/docker-entrypoint.sh nginx -t;
cat /tmp/element-web-config/config.json
cp /tmp/element-web-config/config.json /tmp-app/config.json
cp -r /tmp/element-web-modules /tmp-app/modules
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1"
imagePullPolicy: IfNotPresent
env:
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "config"
mountPath: "/app/config.json"
subPath: "config.json"
readOnly: false
- name: "config"
mountPath: "/app/custom-home.html"
subPath: "custom-home.html"
readOnly: true
- name: "config"
mountPath: "/app/custom-translations.json"
subPath: "custom-translations.json"
readOnly: true
- name: "nginx-config"
mountPath: "/etc/nginx/nginx.conf"
subPath: "nginx.conf"
readOnly: false
- name: "tmp"
mountPath: "/tmp"
- name: "tmp-app"
mountPath: "/tmp-app"
containers:
- name: "element"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1"
imagePullPolicy: IfNotPresent
env:
- name: NGINX_ENVSUBST_TEMPLATE_DIR
value: /non-existant-so-that-this-works-with-read-only-root-filesystem
ports:
- name: element
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: "/health"
port: "element"
scheme: "HTTP"
initialDelaySeconds: 1
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: "/health"
port: "element"
scheme: "HTTP"
initialDelaySeconds: 1
periodSeconds: 1
timeoutSeconds: 1
failureThreshold: 3
successThreshold: 1
startupProbe:
httpGet:
path: "/health"
port: "element"
scheme: "HTTP"
initialDelaySeconds: 2
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 3
successThreshold: 1
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "tmp-app"
mountPath: "/app/config.json"
subPath: "config.json"
readOnly: true
- name: "tmp-app"
mountPath: "/app/modules"
subPath: "modules"
readOnly: true
- name: "config"
mountPath: "/app/custom-home.html"
subPath: "custom-home.html"
readOnly: true
- name: "config"
mountPath: "/app/custom-translations.json"
subPath: "custom-translations.json"
readOnly: true
- name: "nginx-config"
mountPath: "/etc/nginx/nginx.conf"
subPath: "nginx.conf"
readOnly: true
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "config"
configMap:
name: "opendesk-element"
defaultMode: 420
- name: "nginx-config"
configMap:
name: "opendesk-element-nginx"
defaultMode: 420
- name: "tmp-app"
emptyDir:
medium: "Memory"
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
...
---
# Source: opendesk-element/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-element"
labels:
app.kubernetes.io/name: opendesk-element
helm.sh/chart: opendesk-element-6.1.3
app.kubernetes.io/instance: opendesk-element
app.kubernetes.io/managed-by: Helm
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/"
pathType: "Prefix"
backend:
service:
name: opendesk-element
port:
name: element
...
---
# Source: opendesk-well-known/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-well-known"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: opendesk-well-known/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-well-known"
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
data:
client: |-
{
"m.homeserver": {
"base_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
},
"im.vector.riot.jitsi": {
"preferredDomain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
}
}
server: |-
{
"m.server": "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de:443"
}
---
# Source: opendesk-well-known/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-well-known-nginx"
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
data:
nginx.conf: |-
# © 2023 New-Vector
#
# SPDX-License-Identifier: AGPL-3.0-or-later
worker_processes auto;
error_log stderr warn;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
include /etc/nginx/mime.types;
default_type application/octet-stream;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
server {
listen 8080;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
charset utf-8;
location /.well-known/matrix {
default_type application/json;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Robots-Tag "noindex, nofollow, noarchive, noimageindex";
add_header "Access-Control-Allow-Origin" *;
add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS";
add_header "Access-Control-Allow-Headers" "X-Requested-With, Content-Type, Authorization";
if ($request_method = OPTIONS) {
return 200;
}
}
}
}
}
...
---
# Source: opendesk-well-known/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-well-known"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "well-known"
port: 8080
targetPort: 8080
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-well-known
app.kubernetes.io/instance: opendesk-well-known
...
---
# Source: opendesk-well-known/templates/deployment.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "opendesk-well-known"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "clamd"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: opendesk-well-known
app.kubernetes.io/instance: opendesk-well-known
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: a68724b6be43558d837b3c60ae6e7c99978e7e573a7e22c4b93c4575a505eeef
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app.kubernetes.io/name"
operator: In
values:
- "opendesk-well-known"
topologyKey: "kubernetes.io/hostname"
securityContext:
fsGroup: 101
serviceAccountName: "opendesk-well-known"
terminationGracePeriodSeconds: 30
containers:
- name: "well-known"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4"
imagePullPolicy: IfNotPresent
env:
ports:
- name: well-known
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: "/.well-known/matrix/server"
port: "well-known"
scheme: "HTTP"
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: "/.well-known/matrix/server"
port: "well-known"
scheme: "HTTP"
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "config"
mountPath: "/usr/share/nginx/html/.well-known/matrix"
readOnly: true
- name: "nginx-config"
mountPath: "/etc/nginx/nginx.conf"
subPath: "nginx.conf"
readOnly: true
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "config"
configMap:
name: "opendesk-well-known"
defaultMode: 420
- name: "nginx-config"
configMap:
name: "opendesk-well-known-nginx"
defaultMode: 420
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
...
---
# Source: opendesk-well-known/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-well-known"
labels:
app.kubernetes.io/name: opendesk-well-known
helm.sh/chart: opendesk-well-known-6.1.3
app.kubernetes.io/instance: opendesk-well-known
app.kubernetes.io/managed-by: Helm
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/.well-known/matrix"
pathType: "Prefix"
backend:
service:
name: opendesk-well-known
port:
name: well-known
...
---
# Source: opendesk-synapse-web/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-synapse-web"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse-web
helm.sh/chart: opendesk-synapse-web-6.1.3
app.kubernetes.io/instance: opendesk-synapse-web
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: opendesk-synapse-web/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-synapse-web"
labels:
app.kubernetes.io/name: opendesk-synapse-web
helm.sh/chart: opendesk-synapse-web-6.1.3
app.kubernetes.io/instance: opendesk-synapse-web
app.kubernetes.io/managed-by: Helm
data:
429.http: >
HTTP/1.0 429 Too Many Requests
Cache-Control: no-cache
Connection: close
Content-Type: text/html
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Origin, X-Requested-With, Content-Type,
Accept, Authorization
429 Too Many Requests
No server is available to handle this request.
haproxy.cfg: |
global
maxconn 40000
log stdout format raw local0 info
# Allow for rewriting HTTP headers (e.g. Authorization) up to 4k
# https://github.com/haproxy/haproxy/issues/1743
tune.maxrewrite 4096
# Allow start of container when fd limit is too low
# https://github.com/haproxy/haproxy/issues/1866
no strict-limits
defaults
mode http
fullconn 20000
# wait for 5s when connecting to a server
timeout connect 5s
# ... but if there is a backlog of requests, wait for 60s before returning a 500
timeout queue 60s
# close client connections 5m after the last request
# (as recommened by https://support.cloudflare.com/hc/en-us/articles/212794707-General-Best-Practices-for-Load-Balancing-with-CloudFlare)
timeout client 900s
# give clients 5m between requests (otherwise it defaults to the value of 'timeout http-request')
timeout http-keep-alive 900s
# give clients 10s to complete a request (either time between handshake and first request, or time spent sending headers)
timeout http-request 10s
# time out server responses after 90s
timeout server 180s
# allow backend sessions to be shared across frontend sessions
http-reuse aggressive
# limit the number of concurrent requests to each server, to stop
# the python process having to juggle hundreds of queued
# requests. Any requests beyond this limit are held in a queue for
# up to seconds, before being rejected according
# to "errorfile 503" below.
#
# (bear in mind that we have two haproxies, each of which will use
# up to this number of connections, so the actual number of
# connections to the server may be up to twice this figure.)
#
# Note that this is overridden for some servers and backends.
default-server maxconn 500
option redispatch
compression algo gzip
compression type text/plain text/html text/xml application/json text/css
# if we hit the maxconn on a server, and the queue timeout expires, we want
# to avoid returning 503, since that will cause cloudflare to mark us down.
#
# https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#1.3.1 says:
#
# 503 when no server was available to handle the request, or in response to
# monitoring requests which match the "monitor fail" condition
#
errorfile 503 /usr/local/etc/haproxy/429.http
resolvers kubedns
parse-resolv-conf
hold timeout 600s
hold refused 600s
frontend http-in
bind :::8008 v4v6
maxconn 20000
log global
# same as http log, with %Th (handshake time)
log-format "%ci:%cp [%tr] %ft %b/%s %Th/%TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"
capture request header Host len 32
capture request header Referer len 200
capture request header User-Agent len 200
# before we change the 'src', stash it in a session variable
http-request set-var(sess.orig_src) src if !{ var(sess.orig_src) -m found }
# in case this is not the first request on the connection, restore the
# 'src' to the original, in case we fail to parse the x-f-f header.
http-request set-src var(sess.orig_src)
# Traditionally do this only for traffic from some limited IP addreses
# but the incoming router being what it is, means we have no fixed IP here.
http-request set-src hdr(x-forwarded-for)
# We always add a X-Forwarded-For header (clobbering any existing
# headers).
http-request set-header X-Forwarded-For %[src]
# Ingresses by definition run on both 80 & 443 and there's no customising of that
# It is up to the ingress controller and any annotations provided to it whether
# it sets any additional headers or not or whether it redirects http -> https
# We don't have control (or even visiblity) on what the ingress controller is or does
# So we can't guarantee the header is present
# https is a more sensible default than http for the missing header as we force public_baseurl to https
http-request set-header X-Forwarded-Proto https if !{ hdr(X-Forwarded-Proto) -m found }
monitor-uri /haproxy_test
# If we get here then we want to proxy everything to synapse or a worker.
use_backend return_204 if { method OPTIONS }
# try to extract a useful access token from either the auth header or a
# query-param
http-request set-var(req.access_token) urlp("access_token") if { urlp("access_token") -m found }
http-request set-var(req.access_token) req.fhdr(Authorization),word(2," ") if { hdr_beg("Authorization") -i "Bearer " }
# We also need a http header format to allow us to loadbalance and make decisions:
http-request set-header X-Access-Token %[var(req.access_token)]
# Disable Google FLoC
http-response set-header Permissions-Policy "interest-cohort=()"
# Load the backend from one of the map files.
acl has_get_map path -m reg -M -f /usr/local/etc/haproxy/path_map_file_get
http-request set-var(req.backend) path,map_reg(/usr/local/etc/haproxy/path_map_file_get,main) if has_get_map METH_GET
http-request set-var(req.backend) path,map_reg(/usr/local/etc/haproxy/path_map_file,main) unless { var(req.backend) -m found }
use_backend %[var(req.backend)]
backend main
default-server maxconn 250
# Use DNS SRV service discovery on the headless service
server-template main 1 _synapse-http._tcp.opendesk-synapse.yschmidt-opendesk-argo.svc.cluster.local resolvers kubedns init-addr none
# a backend which responds to everything with a 204
backend return_204
http-request return status 204 hdr "Access-Control-Allow-Origin" "*" hdr "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS" hdr "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept, Authorization"
# a fake backend which fonxes every request with a 500. Useful for
# handling overloads etc.
backend return_500
http-request deny deny_status 500
path_map_file: |
# A map file that is used in haproxy config to map from matrix paths to the
# named backend. The format is: path_regexp backend_name
path_map_file_get: |
# A map file that is used in haproxy config to map from matrix paths to the
# named backend. The format is: path_regexp backend_name
...
---
# Source: opendesk-synapse-web/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-synapse-web"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse-web
helm.sh/chart: opendesk-synapse-web-6.1.3
app.kubernetes.io/instance: opendesk-synapse-web
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "web"
port: 8008
targetPort: 8008
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-synapse-web
app.kubernetes.io/instance: opendesk-synapse-web
...
---
# Source: opendesk-synapse-web/templates/deployment.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "opendesk-synapse-web"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse-web
helm.sh/chart: opendesk-synapse-web-6.1.3
app.kubernetes.io/instance: opendesk-synapse-web
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: opendesk-synapse-web
app.kubernetes.io/instance: opendesk-synapse-web
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 23b977b6314dd51e3b93937bf5399f74d3b74e20ef62e4f4c17beec211cfff18
labels:
app.kubernetes.io/name: opendesk-synapse-web
helm.sh/chart: opendesk-synapse-web-6.1.3
app.kubernetes.io/instance: opendesk-synapse-web
app.kubernetes.io/managed-by: Helm
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app.kubernetes.io/name"
operator: In
values:
- "opendesk-synapse-web"
topologyKey: "kubernetes.io/hostname"
securityContext:
fsGroup: 101
serviceAccountName: opendesk-synapse-web
terminationGracePeriodSeconds: 30
containers:
- name: "haproxy"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/rapidfort/haproxy-official:2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c"
imagePullPolicy: IfNotPresent
env:
ports:
- name: web
containerPort: 8008
protocol: TCP
livenessProbe:
httpGet:
path: "/haproxy_test"
port: "web"
scheme: "HTTP"
initialDelaySeconds: 1
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
successThreshold: 1
readinessProbe:
httpGet:
path: "/haproxy_test"
port: "web"
scheme: "HTTP"
initialDelaySeconds: 1
periodSeconds: 1
timeoutSeconds: 1
failureThreshold: 3
successThreshold: 1
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 64Mi
volumeMounts:
- name: "config"
mountPath: "/usr/local/etc/haproxy"
readOnly: true
volumes:
- name: "config"
configMap:
name: "opendesk-synapse-web"
defaultMode: 420
...
---
# Source: opendesk-synapse-web/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-synapse-web"
labels:
app.kubernetes.io/name: opendesk-synapse-web
helm.sh/chart: opendesk-synapse-web-6.1.3
app.kubernetes.io/instance: opendesk-synapse-web
app.kubernetes.io/managed-by: Helm
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 100M
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
nginx.org/client-max-body-size: 100M
nginx.org/proxy-read-timeout: 60s
nginx.org/proxy-send-timeout: 60s
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/_matrix"
pathType: "Prefix"
backend:
service:
name: opendesk-synapse-web
port:
name: web
- path: "/_synapse"
pathType: "Prefix"
backend:
service:
name: opendesk-synapse-web
port:
name: web
...
---
# Source: opendesk-synapse/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-synapse"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: opendesk-synapse/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "opendesk-synapse"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
stringData:
app-service-intercom-service.yaml: |
as_token: f4a859990d1d37276a77e88ccd1e67d158b5e18f
hs_token: f4a859990d1d37276a77e88ccd1e67d158b5e18f
id: intercom-service
namespaces:
users:
- exclusive: false
regex: '@.*'
sender_localpart: intercom-service
url: null
app-service-ox-appsuite.yaml: |
as_token: 5dbaa82eda85bb25f7963063b327555e3f3a821d
hs_token: 5dbaa82eda85bb25f7963063b327555e3f3a821d
id: ox-appsuite
namespaces:
users:
- exclusive: false
regex: '@.*'
sender_localpart: ox-appsuite
url: null
...
---
# Source: opendesk-synapse/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "opendesk-synapse-database-password"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
stringData:
pgpass.conf: "postgresql:5432:matrix:matrix_user:5cd0a266029154912dd660f748137982a924e6f5"
...
---
# Source: opendesk-synapse/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-synapse-main"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
data:
instance_template.yaml: |-
worker_app: synapse.app.homeserver
database:
name: "psycopg2"
args:
user: matrix_user
passfile: "/config/rendered/pgpass.conf"
database: matrix
host: postgresql
port: 5432
channel_binding: prefer
connect_timeout: 10
client_encoding: auto
application_name: REPLACE_HOSTNAME
keepalives: 1
keepalives_idle: 10
keepalives_interval: 10
keepalives_count: 3
replication: false
gssencmode: prefer
sslmode: prefer
sslcompression: 0
ssl_min_protocol_version: TLSv1.2
cp_min: 3
cp_max: 5
---
# Source: opendesk-synapse/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-synapse-shared"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
data:
homeserver.yaml: |
server_name: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
public_baseurl: https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
report_stats: false
signing_key_path: /media/generatedSecrets/signingKey
log_config: "/config/log_config.yaml"
email:
enable_notifs: true
enable_tls: false
force_tls: false
require_transport_security: false
notif_from: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
smtp_host: "postfix.yschmidt-opendesk-argo.svc.cluster.local"
smtp_port: "25"
smtp_user: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
smtp_pass: "1884bda7fb31c726adcd094399ab63319e9ca56f"
ip_range_blacklist:
- '127.0.0.0/8'
- '10.0.0.0/8'
- '172.16.0.0/12'
- '192.168.0.0/16'
- '100.64.0.0/10'
- '192.0.0.0/24'
- '169.254.0.0/16'
- '192.88.99.0/24'
- '198.18.0.0/15'
- '192.0.2.0/24'
- '198.51.100.0/24'
- '203.0.113.0/24'
- '224.0.0.0/4'
- '::1/128'
- 'fe80::/10'
- 'fc00::/7'
- '2001:db8::/32'
- 'ff00::/8'
- 'fec0::/10'
listeners:
- port: 8008
tls: false
bind_addresses: ['0.0.0.0']
type: http
x_forwarded: true
resources:
- names: [client]
compress: false
- port: 8448
tls: false
bind_addresses: ['0.0.0.0']
type: http
x_forwarded: true
resources:
- names: [federation]
compress: false
- port: 9093
tls: false
bind_addresses: ['0.0.0.0']
type: http
x_forwarded: false
resources:
- names: [replication]
compress: false
- type: metrics
port: 9001
bind_addresses: ['0.0.0.0']
- port: 8080
tls: false
bind_addresses: ['0.0.0.0']
type: http
x_forwarded: false
resources:
- names: []
compress: false
enabled_media_repo: True
media_store_path: "/media/media_store"
uploads_path: "/media/uploads"
enable_metrics: true
registration_shared_secret_path: "/media/generatedSecrets/sharedSecret"
use_presence: false
presence:
enabled: false
enable_set_displayname: true
require_auth_for_profile_requests: true
limit_profile_requests_to_users_who_share_rooms: false
allow_public_rooms_without_auth: false
allow_public_rooms_over_federation: false
room_list_publication_rules:
- "action": "allow"
federation_domain_whitelist:
sso:
client_whitelist:
- https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
oidc_providers:
- idp_id: oidc
idp_name: OIDC
issuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk
client_id: opendesk-matrix
client_secret: "b4f6604310ebd2d06b5fc8832ae1095e43481b04"
scopes:
- openid
- opendesk-matrix-scope
allow_existing_users: true
user_mapping_provider:
config:
subject_template: "{{ user.opendesk_useruuid }}"
display_name_template: "{{ user.name }}"
localpart_template: "{{ user.opendesk_username }}"
email_template: "{{ user.email }}"
backchannel_logout_enabled: true
backchannel_logout_ignore_sub: true
password_config:
enabled: true
localdb_enabled: true
turn_uris:
turn_username: ""
turn_password: ""
turn_user_lifetime: 1h
turn_allow_guests: true
allow_guest_access: true
modules:
- module: synapse_guest_module.GuestModule
config:
display_name_suffix: ' (Gast)'
instance_map:
main:
host: opendesk-synapse
port: 9093
send_federation: True
start_pushers: True
app_service_config_files:
- /secrets/app-service-intercom-service.yaml
- /secrets/app-service-ox-appsuite.yaml
rc_login:
account:
burst_count: 8
per_second: 2
address:
burst_count: 12
per_second: 2
room_prejoin_state:
additional_event_types:
- m.space.parent
- net.nordeck.meetings.metadata
- m.room.power_levels
user_directory:
enabled: true
search_all_users: true
log_config.yaml: |
version: 1
formatters:
precise:
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
handlers:
console:
class: logging.StreamHandler
formatter: precise
loggers:
synapse.storage.SQL:
level: "INFO"
root:
level: "INFO"
handlers:
- console
disable_existing_loggers: false
...
---
# Source: opendesk-synapse/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-synapse"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
clusterIP: None
ports:
- name: "synapse-health"
port: 8080
targetPort: 8080
protocol: "TCP"
- name: "synapse-http"
port: 8008
targetPort: 8008
protocol: "TCP"
- name: "synapse-metrics"
port: 9001
targetPort: 9001
protocol: "TCP"
- name: "synapse-repl"
port: 9093
targetPort: 9093
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-synapse
app.kubernetes.io/instance: opendesk-synapse
...
---
# Source: opendesk-synapse/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-synapse-federation"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
spec:
type: "ClusterIP"
ports:
- name: "federation"
port: 8448
targetPort: 8448
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-synapse
app.kubernetes.io/instance: opendesk-synapse
...
---
# Source: opendesk-synapse/templates/statefulset.yaml
apiVersion: apps/v1
kind: "StatefulSet"
metadata:
name: "opendesk-synapse"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
serviceName: opendesk-synapse
selector:
matchLabels:
app.kubernetes.io/name: opendesk-synapse
app.kubernetes.io/instance: opendesk-synapse
updateStrategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 7e90bcb43ebf501dd9715bacbc262849eca65ba5a3a1470821263d9fbb36e8f0
checksum/secret: d256494dce085a3e07453ccda7bd396ee7629298a316508e5030eaaec90e2aa0
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 10991
serviceAccountName: "opendesk-synapse"
terminationGracePeriodSeconds: 30
initContainers:
- name: "install-guest-module"
image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module:1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea"
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 10991
runAsNonRoot: true
runAsUser: 10991
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 256Mi
volumeMounts:
- name: "synapse-modules"
mountPath: "/modules"
containers:
- name: "synapse"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 10991
runAsNonRoot: true
runAsUser: 10991
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/synapse:v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc"
imagePullPolicy: IfNotPresent
command:
- "bash"
- "-cx"
- |
mkdir -p /media/generatedSecrets
cp /secret/pgpass.conf /config/rendered/pgpass.conf
chmod 0400 /config/rendered/pgpass.conf
sed "s/REPLACE_HOSTNAME/$(hostname -s)/g" /config/instance_template.yaml > /config/rendered/instance.yaml
/start.py run --config-path=/config/homeserver.yaml --config-path=/config/rendered/instance.yaml
env:
- name: "SYNAPSE_WORKER"
value: "synapse.app.homeserver"
- name: "SSL_CERT_DIR"
value: "/etc/ssl/certs"
- name: "PYTHONPATH"
value: "/modules"
ports:
- name: "synapse-health"
containerPort: 8080
protocol: TCP
- name: "synapse-http"
containerPort: 8008
protocol: TCP
- name: "synapse-metrics"
containerPort: 9001
protocol: TCP
- name: "synapse-repl"
containerPort: 9093
protocol: TCP
livenessProbe:
httpGet:
path: "/health"
port: "synapse-health"
scheme: "HTTP"
initialDelaySeconds: 1
periodSeconds: 6
timeoutSeconds: 2
failureThreshold: 8
successThreshold: 1
readinessProbe:
httpGet:
path: "/health"
port: "synapse-health"
scheme: "HTTP"
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 2
failureThreshold: 8
successThreshold: 1
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 256Mi
volumeMounts:
- mountPath: "/config/homeserver.yaml"
name: "shared-config"
readOnly: true
subPath: "homeserver.yaml"
- mountPath: "/config/instance_template.yaml"
name: "process-type-config"
readOnly: true
subPath: "instance_template.yaml"
- mountPath: "/config/log_config.yaml"
name: "shared-config"
readOnly: true
subPath: "log_config.yaml"
- mountPath: "/secrets/"
name: "external-secrets"
readOnly: true
- mountPath: "/secret/pgpass.conf"
name: "database-password"
readOnly: true
subPath: "pgpass.conf"
- mountPath: "/config/rendered"
name: "rendered-config"
- mountPath: "/media"
name: "media"
- mountPath: "/tmp"
name: "tmp"
- name: "synapse-modules"
mountPath: "/modules"
volumes:
- name: "external-secrets"
secret:
secretName: "opendesk-synapse"
defaultMode: 420
- name: "database-password"
secret:
secretName: "opendesk-synapse-database-password"
defaultMode: 420
- name: "shared-config"
configMap:
name: "opendesk-synapse-shared"
defaultMode: 420
- name: "process-type-config"
configMap:
name: "opendesk-synapse-main"
defaultMode: 420
- name: "rendered-config"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
- name: "synapse-modules"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
volumeClaimTemplates:
- metadata:
name: "media"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: opendesk-synapse/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "opendesk-synapse"
labels:
app.kubernetes.io/name: opendesk-synapse
helm.sh/chart: opendesk-synapse-6.1.3
app.kubernetes.io/instance: opendesk-synapse
app.kubernetes.io/managed-by: Helm
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/"
pathType: "Prefix"
backend:
service:
name: opendesk-synapse-federation
port:
name: federation
...
---
# Source: opendesk-synapse-create-account/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-matrix-user-verification-service-bootstrap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap
app.kubernetes.io/managed-by: Helm
...
---
# Source: opendesk-synapse-create-account/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "opendesk-matrix-user-verification-service-bootstrap"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap
app.kubernetes.io/managed-by: Helm
stringData:
password: "3187b7b18610762c770a46421965e3a7e6ce93f7"
...
---
# Source: opendesk-synapse-create-account/templates/role.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "Role"
metadata:
namespace: "yschmidt-opendesk-argo"
name: "opendesk-matrix-user-verification-service-bootstrap"
rules:
# needed to execute commands inside pod
- apiGroups: [""]
resources:
- "pods"
resourceNames: ["opendesk-synapse-0"]
verbs: ["get"]
- apiGroups: [""]
resources:
- "pods/exec"
resourceNames: ["opendesk-synapse-0"]
verbs: ["create"]
# needed to create and replace the secret
- apiGroups: [""]
resources:
- "secrets"
verbs: ["create"]
- apiGroups: [""]
resources:
- "secrets"
resourceNames:
- "opendesk-matrix-user-verification-service-account"
verbs: ["delete"]
...
---
# Source: opendesk-synapse-create-account/templates/rolebinding.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "RoleBinding"
metadata:
name: "opendesk-matrix-user-verification-service-bootstrap"
namespace: "yschmidt-opendesk-argo"
roleRef: # points to the ClusterRole
apiGroup: "rbac.authorization.k8s.io"
kind: "Role"
name: "opendesk-matrix-user-verification-service-bootstrap"
subjects: # points to the ServiceAccount
- kind: "ServiceAccount"
name: "opendesk-matrix-user-verification-service-bootstrap"
namespace: "yschmidt-opendesk-argo" # ns of service account
...
---
# Source: opendesk-synapse-create-account/templates/delete-job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-matrix-user-verification-service-bootstrap"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
"argocd.argoproj.io/hook": "Sync"
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
"argocd.argoproj.io/hook": "Skip"
spec:
ttlSecondsAfterFinished: 60
template:
spec:
serviceAccountName: "opendesk-matrix-user-verification-service-bootstrap"
containers:
- name: "opendesk-synapse-create-account"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 256Mi
tty: true
env:
- name: NAMESPACE
value: "yschmidt-opendesk-argo"
- name: SECRET_NAME
value: "opendesk-matrix-user-verification-service-account"
command:
- "/bin/bash"
- "-c"
- |
kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found
restartPolicy: Never
backoffLimit: 4
...
---
# Source: opendesk-synapse-create-account/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-matrix-user-verification-service-bootstrap"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
"argocd.argoproj.io/hook": "Sync"
"argocd.argoproj.io/hook": "Sync"
spec:
ttlSecondsAfterFinished: 60
template:
spec:
serviceAccountName: "opendesk-matrix-user-verification-service-bootstrap"
containers:
- name: "opendesk-synapse-create-account"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 256Mi
tty: true
env:
- name: "NAMESPACE"
value: "yschmidt-opendesk-argo"
- name: "SYNAPSE_POD"
value: "opendesk-synapse-0"
- name: "MATRIX_USERNAME"
value: "uvs"
- name: "MATRIX_PASSWORD"
valueFrom:
secretKeyRef:
name: "opendesk-matrix-user-verification-service-bootstrap"
key: "password"
- name: "DEVICE_ID"
value: "DEFAULT"
- name: "SECRET_NAME"
value: "opendesk-matrix-user-verification-service-account"
command:
- "/bin/bash"
- "-c"
- |
# 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
until kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \
-- bash -c 'curl -sf http://localhost:8008/health';
do
echo "waiting for container to be alive..."
sleep 1
done
ACCESS_TOKEN=$(kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \
-- bash -c "
echo \"create the user ${MATRIX_USERNAME} if not exists\"
register_new_matrix_user -u ${MATRIX_USERNAME} -a -c /config/homeserver.yaml -p ${MATRIX_PASSWORD} || true
RESULT=''
ACCESS_TOKEN=''
MATRIX_USER_ID=''
create_user() {
RESULT=\$(curl -X POST -d '{\"type\":\"m.login.password\", \"user\":\"$MATRIX_USERNAME\", \"password\":\"$MATRIX_PASSWORD\", \"device_id\":\"$DEVICE_ID\"}' http://localhost:8008/_matrix/client/v3/login)
ACCESS_TOKEN=\$(echo \$RESULT | sed -n 's/.*\"access_token\":\"\([^\"]*\)\".*/\1/p')
MATRIX_USER_ID=\$(echo \$RESULT | sed -n 's/.*\"user_id\":\"\([^\"]*\)\".*/\1/p')
if [ -z "\${ACCESS_TOKEN}" ]
then
return 1
else
return 0
fi
}
echo \"login as user ${MATRIX_USERNAME}\"
until create_user
do
echo \$RESULT
echo 'waiting for user to login...'
sleep 5
done
echo \"disable rate limiting for user ${MATRIX_USERNAME}\"
until curl -X POST -f -d '{\"messages_per_second\": 0, \"burst_count\": 0}' -H \"Authorization: Bearer \$ACCESS_TOKEN\" -H 'Content-Type: application/json' http://localhost:8008/_synapse/admin/v1/users/\$MATRIX_USER_ID/override_ratelimit
do
echo 'waiting for rate limit to be set...'
sleep 5
done
echo "\n"
echo \$ACCESS_TOKEN
" | tee /dev/tty | tail -1)
kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found
kubectl create secret --namespace="${NAMESPACE}" generic ${SECRET_NAME} --from-literal=access_token=$ACCESS_TOKEN
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
restartPolicy: "Never"
volumes:
- name: "tmp"
emptyDir:
medium: "Memory"
backoffLimit: 4
...
---
# Source: opendesk-matrix-user-verification-service/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-matrix-user-verification-service"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: opendesk-matrix-user-verification-service/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "opendesk-matrix-user-verification-service"
labels:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
app.kubernetes.io/managed-by: Helm
data: {}
...
---
# Source: opendesk-matrix-user-verification-service/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "opendesk-matrix-user-verification-service"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
...
---
# Source: opendesk-matrix-user-verification-service/templates/deployment.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "opendesk-matrix-user-verification-service"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 225323de6c98cae082cc08ad900b49fb0e713bc64fc94525e8bdcc92b8e05d4c
labels:
app.kubernetes.io/name: opendesk-matrix-user-verification-service
helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3
app.kubernetes.io/instance: opendesk-matrix-user-verification-service
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: "opendesk-matrix-user-verification-service"
containers:
- name: "uvs"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service:v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008"
imagePullPolicy: "IfNotPresent"
env:
- name: UVS_HOMESERVER_URL
value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: UVS_ACCESS_TOKEN
valueFrom:
secretKeyRef:
key: access_token
name: opendesk-matrix-user-verification-service-account
- name: UVS_DISABLE_IP_BLACKLIST
value: "true"
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: http
containerPort: 3000
protocol: TCP
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
volumeMounts:
volumes:
...
---
# Source: matrix-neoboard-widget/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: matrix-neoboard-widget
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neoboard-widget
helm.sh/chart: matrix-neoboard-widget-3.5.1
app.kubernetes.io/instance: matrix-neoboard-widget
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: matrix-neoboard-widget/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "matrix-neoboard-widget"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neoboard-widget
helm.sh/chart: matrix-neoboard-widget-3.5.1
app.kubernetes.io/instance: matrix-neoboard-widget
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: matrix-neoboard-widget
app.kubernetes.io/instance: matrix-neoboard-widget
...
---
# Source: matrix-neoboard-widget/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: matrix-neoboard-widget
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neoboard-widget
helm.sh/chart: matrix-neoboard-widget-3.5.1
app.kubernetes.io/instance: matrix-neoboard-widget
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: matrix-neoboard-widget
app.kubernetes.io/instance: matrix-neoboard-widget
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
labels:
app.kubernetes.io/name: matrix-neoboard-widget
helm.sh/chart: matrix-neoboard-widget-3.5.1
app.kubernetes.io/instance: matrix-neoboard-widget
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: matrix-neoboard-widget
containers:
- name: "widget"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget:2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5"
imagePullPolicy: IfNotPresent
env:
- name: REACT_APP_HOME_SERVER_URL
value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: REACT_APP_PRIMARY_COLOR
value: "#571EFA"
- name: REACT_APP_LIGHT_PRIMARY_COLOR
value: "#571EFA"
- name: REACT_APP_DARK_PRIMARY_COLOR
value: "#571EFA"
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 48Mi
volumeMounts:
- name: "cache"
mountPath: "/var/cache/nginx"
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "cache"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
...
---
# Source: matrix-neoboard-widget/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "matrix-neoboard-widget"
labels:
app.kubernetes.io/name: matrix-neoboard-widget
helm.sh/chart: matrix-neoboard-widget-3.5.1
app.kubernetes.io/instance: matrix-neoboard-widget
app.kubernetes.io/managed-by: Helm
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: matrix-neoboard-widget
port:
name: http
...
---
# Source: matrix-neochoice-widget/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: matrix-neochoice-widget
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neochoice-widget
helm.sh/chart: matrix-neochoice-widget-3.5.1
app.kubernetes.io/instance: matrix-neochoice-widget
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: matrix-neochoice-widget/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "matrix-neochoice-widget"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neochoice-widget
helm.sh/chart: matrix-neochoice-widget-3.5.1
app.kubernetes.io/instance: matrix-neochoice-widget
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: matrix-neochoice-widget
app.kubernetes.io/instance: matrix-neochoice-widget
...
---
# Source: matrix-neochoice-widget/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: matrix-neochoice-widget
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neochoice-widget
helm.sh/chart: matrix-neochoice-widget-3.5.1
app.kubernetes.io/instance: matrix-neochoice-widget
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: matrix-neochoice-widget
app.kubernetes.io/instance: matrix-neochoice-widget
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
labels:
app.kubernetes.io/name: matrix-neochoice-widget
helm.sh/chart: matrix-neochoice-widget-3.5.1
app.kubernetes.io/instance: matrix-neochoice-widget
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: matrix-neochoice-widget
containers:
- name: "widget"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget:1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb"
imagePullPolicy: IfNotPresent
env:
- name: REACT_APP_HOME_SERVER_URL
value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: REACT_APP_POLL_DESCRIPTION_REQUIRED
value: "true"
- name: REACT_APP_IGNORE_USER_IDS
value: "@meetings-bot:yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: REACT_APP_PRIMARY_COLOR
value: "#571EFA"
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
volumeMounts:
- name: "cache"
mountPath: "/var/cache/nginx"
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "cache"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
...
---
# Source: matrix-neochoice-widget/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "matrix-neochoice-widget"
labels:
app.kubernetes.io/name: matrix-neochoice-widget
helm.sh/chart: matrix-neochoice-widget-3.5.1
app.kubernetes.io/instance: matrix-neochoice-widget
app.kubernetes.io/managed-by: Helm
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: matrix-neochoice-widget
port:
name: http
...
---
# Source: matrix-neodatefix-widget/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: matrix-neodatefix-widget
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neodatefix-widget
helm.sh/chart: matrix-neodatefix-widget-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-widget
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: matrix-neodatefix-widget/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "matrix-neodatefix-widget"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neodatefix-widget
helm.sh/chart: matrix-neodatefix-widget-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-widget
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: matrix-neodatefix-widget
app.kubernetes.io/instance: matrix-neodatefix-widget
...
---
# Source: matrix-neodatefix-widget/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: matrix-neodatefix-widget
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neodatefix-widget
helm.sh/chart: matrix-neodatefix-widget-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-widget
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: matrix-neodatefix-widget
app.kubernetes.io/instance: matrix-neodatefix-widget
strategy:
type: RollingUpdate
template:
metadata:
annotations:
checksum/configmap: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
labels:
app.kubernetes.io/name: matrix-neodatefix-widget
helm.sh/chart: matrix-neodatefix-widget-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-widget
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: matrix-neodatefix-widget
containers:
- name: "widget"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget:1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b"
imagePullPolicy: IfNotPresent
env:
- name: REACT_APP_HOME_SERVER_URL
value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: REACT_APP_API_BASE_URL
value: "https://matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: REACT_APP_BOT_USER_ID
value: "@meetings-bot:yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: REACT_APP_DISPLAY_ALL_MEETINGS
value: "true"
- name: REACT_APP_PRIMARY_COLOR
value: "#571EFA"
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
volumeMounts:
- name: "cache"
mountPath: "/var/cache/nginx"
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "cache"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
...
---
# Source: matrix-neodatefix-widget/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "matrix-neodatefix-widget"
labels:
app.kubernetes.io/name: matrix-neodatefix-widget
helm.sh/chart: matrix-neodatefix-widget-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-widget
app.kubernetes.io/managed-by: Helm
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: matrix-neodatefix-widget
port:
name: http
...
---
# Source: opendesk-synapse-create-account/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "matrix-neodatefix-bot-bootstrap"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap
app.kubernetes.io/managed-by: Helm
...
---
# Source: opendesk-synapse-create-account/templates/secret.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "matrix-neodatefix-bot-bootstrap"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap
app.kubernetes.io/managed-by: Helm
stringData:
password: "f14e2756afd0fba205bd037f1d2363e7cedc8f89"
...
---
# Source: opendesk-synapse-create-account/templates/role.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "Role"
metadata:
namespace: "yschmidt-opendesk-argo"
name: "matrix-neodatefix-bot-bootstrap"
rules:
# needed to execute commands inside pod
- apiGroups: [""]
resources:
- "pods"
resourceNames: ["opendesk-synapse-0"]
verbs: ["get"]
- apiGroups: [""]
resources:
- "pods/exec"
resourceNames: ["opendesk-synapse-0"]
verbs: ["create"]
# needed to create and replace the secret
- apiGroups: [""]
resources:
- "secrets"
verbs: ["create"]
- apiGroups: [""]
resources:
- "secrets"
resourceNames:
- "matrix-neodatefix-bot-account"
verbs: ["delete"]
...
---
# Source: opendesk-synapse-create-account/templates/rolebinding.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "RoleBinding"
metadata:
name: "matrix-neodatefix-bot-bootstrap"
namespace: "yschmidt-opendesk-argo"
roleRef: # points to the ClusterRole
apiGroup: "rbac.authorization.k8s.io"
kind: "Role"
name: "matrix-neodatefix-bot-bootstrap"
subjects: # points to the ServiceAccount
- kind: "ServiceAccount"
name: "matrix-neodatefix-bot-bootstrap"
namespace: "yschmidt-opendesk-argo" # ns of service account
...
---
# Source: opendesk-synapse-create-account/templates/delete-job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "matrix-neodatefix-bot-bootstrap"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
"argocd.argoproj.io/hook": "Sync"
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
"argocd.argoproj.io/hook": "Skip"
spec:
ttlSecondsAfterFinished: 60
template:
spec:
serviceAccountName: "matrix-neodatefix-bot-bootstrap"
containers:
- name: "opendesk-synapse-create-account"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 256Mi
tty: true
env:
- name: NAMESPACE
value: "yschmidt-opendesk-argo"
- name: SECRET_NAME
value: "matrix-neodatefix-bot-account"
command:
- "/bin/bash"
- "-c"
- |
kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found
restartPolicy: Never
backoffLimit: 4
...
---
# Source: opendesk-synapse-create-account/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "matrix-neodatefix-bot-bootstrap"
labels:
app.kubernetes.io/name: opendesk-synapse-create-account
helm.sh/chart: opendesk-synapse-create-account-6.1.3
app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
"argocd.argoproj.io/hook": "Sync"
"argocd.argoproj.io/hook": "Sync"
spec:
ttlSecondsAfterFinished: 60
template:
spec:
serviceAccountName: "matrix-neodatefix-bot-bootstrap"
containers:
- name: "opendesk-synapse-create-account"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619"
imagePullPolicy: "IfNotPresent"
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 256Mi
tty: true
env:
- name: "NAMESPACE"
value: "yschmidt-opendesk-argo"
- name: "SYNAPSE_POD"
value: "opendesk-synapse-0"
- name: "MATRIX_USERNAME"
value: "meetings-bot"
- name: "MATRIX_PASSWORD"
valueFrom:
secretKeyRef:
name: "matrix-neodatefix-bot-bootstrap"
key: "password"
- name: "DEVICE_ID"
value: "DEFAULT"
- name: "SECRET_NAME"
value: "matrix-neodatefix-bot-account"
command:
- "/bin/bash"
- "-c"
- |
# 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
until kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \
-- bash -c 'curl -sf http://localhost:8008/health';
do
echo "waiting for container to be alive..."
sleep 1
done
ACCESS_TOKEN=$(kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \
-- bash -c "
echo \"create the user ${MATRIX_USERNAME} if not exists\"
register_new_matrix_user -u ${MATRIX_USERNAME} -a -c /config/homeserver.yaml -p ${MATRIX_PASSWORD} || true
RESULT=''
ACCESS_TOKEN=''
MATRIX_USER_ID=''
create_user() {
RESULT=\$(curl -X POST -d '{\"type\":\"m.login.password\", \"user\":\"$MATRIX_USERNAME\", \"password\":\"$MATRIX_PASSWORD\", \"device_id\":\"$DEVICE_ID\"}' http://localhost:8008/_matrix/client/v3/login)
ACCESS_TOKEN=\$(echo \$RESULT | sed -n 's/.*\"access_token\":\"\([^\"]*\)\".*/\1/p')
MATRIX_USER_ID=\$(echo \$RESULT | sed -n 's/.*\"user_id\":\"\([^\"]*\)\".*/\1/p')
if [ -z "\${ACCESS_TOKEN}" ]
then
return 1
else
return 0
fi
}
echo \"login as user ${MATRIX_USERNAME}\"
until create_user
do
echo \$RESULT
echo 'waiting for user to login...'
sleep 5
done
echo \"disable rate limiting for user ${MATRIX_USERNAME}\"
until curl -X POST -f -d '{\"messages_per_second\": 0, \"burst_count\": 0}' -H \"Authorization: Bearer \$ACCESS_TOKEN\" -H 'Content-Type: application/json' http://localhost:8008/_synapse/admin/v1/users/\$MATRIX_USER_ID/override_ratelimit
do
echo 'waiting for rate limit to be set...'
sleep 5
done
echo "\n"
echo \$ACCESS_TOKEN
" | tee /dev/tty | tail -1)
kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found
kubectl create secret --namespace="${NAMESPACE}" generic ${SECRET_NAME} --from-literal=access_token=$ACCESS_TOKEN
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
restartPolicy: "Never"
volumes:
- name: "tmp"
emptyDir:
medium: "Memory"
backoffLimit: 4
...
---
# Source: matrix-neodatefix-bot/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: matrix-neodatefix-bot
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
annotations:
automountServiceAccountToken: false
...
---
# Source: matrix-neodatefix-bot/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "matrix-neodatefix-bot-config"
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
data:
default_events.json: |+
{
"state_events": [
{
"type": "m.room.power_levels",
"state_key": "",
"content": {
"events": {
"net.nordeck.meetings.metadata": 100,
"net.nordeck.whiteboard.sessions": 0,
"net.nordeck.whiteboard": 0,
"net.nordeck.meetings.meeting.update": 100,
"net.nordeck.meetings.meeting.close": 100,
"m.room.tombstone": 100,
"im.vector.modular.widgets": 50,
"net.nordeck.meetings.meeting.widgets.handle": 50,
"io.element.widgets.layout": 50,
"net.nordeck.meetings.meeting.participants.handle": 50,
"net.nordeck.meetings.breakoutsessions.create": 25,
"net.nordeck.meetings.meeting.change.message_permissions": 25,
"net.nordeck.meetings.sub_meetings.send_message": 50,
"net.nordeck.poll": 50,
"net.nordeck.poll.settings": 50,
"net.nordeck.poll.vote": 25
},
"users_default": 25,
"events_default": 0,
"state_default": 50,
"ban": 50,
"kick": 50,
"redact": 50,
"invite": 50
}
},
{
"type": "m.room.history_visibility",
"content": {
"history_visibility": "shared"
}
},
{
"type": "m.room.guest_access",
"content": {
"guest_access": "forbidden"
}
},
{
"type": "m.room.join_rules",
"content": {
"join_rule": "knock"
}
},
{
"type": "im.vector.modular.widgets",
"state_key": "jitsi",
"content": {
"type": "jitsi",
"url": "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/jitsi.html",
"name": "Videokonferenz",
"data": {
"domain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de",
"conferenceId": "{{base32_room_id}}",
"roomName": "{{title}}",
"startWithAudioMuted": "true",
"startWithVideoMuted": "true",
"auth": "openidtoken-jwt"
}
}
},
{
"type": "im.vector.modular.widgets",
"state_key": "neochoice",
"content": {
"type": "net.nordeck.neochoice",
"url": "https://matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url",
"name": "Abstimmungen",
"avatar_url": "../widget-images/poll.png"
}
},
{
"type": "im.vector.modular.widgets",
"state_key": "neoboard",
"content": {
"type": "net.nordeck.neoboard",
"url": "https://matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url",
"name": "Whiteboard",
"avatar_url": "../widget-images/neoboard.png"
}
}
],
"room_events": []
}
default_widget_layouts.json: |
[
{
"widgetIds": ["jitsi"],
"layouts": {
"jitsi": {
"container": "top",
"index": 0,
"width": 100,
"height": 100
}
}
},
{
"widgetIds": ["neoboard"],
"layouts": {
"neoboard": {
"container": "top",
"index": 0,
"width": 100,
"height": 100
}
}
},
{
"widgetIds": ["jitsi", "neoboard"],
"layouts": {
"jitsi": {
"container": "top",
"index": 0,
"width": 50,
"height": 100
},
"neoboard": {
"container": "top",
"index": 0,
"width": 50,
"height": 100
}
}
},
{
"widgetIds": ["jitsi", "neochoice"],
"layouts": {
"jitsi": {
"container": "top",
"index": 0,
"width": 100,
"height": 100
}
}
},
{
"widgetIds": ["jitsi", "neoboard", "neochoice"],
"layouts": {
"jitsi": {
"container": "top",
"index": 0,
"width": 50,
"height": 100
},
"neoboard": {
"container": "top",
"index": 0,
"width": 50,
"height": 100
}
}
}
]
---
# Source: matrix-neodatefix-bot/templates/configmap.yaml
kind: "ConfigMap"
apiVersion: "v1"
metadata:
name: "matrix-neodatefix-bot-widget-images"
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
binaryData:
neoboard.png: |-
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEfklEQVRYCcVXfVBUVRT/7RNEiBAisAEZ/GKkqCSjBmjcmKzAqRnGBsYwzdSykGCQcESnBKfBQYXIzNYPItPNxmSicJDUxsJJ46OSj7FkREEjRGlZQViElaV37nCXfbvvwS6DdP54795zzv39znv3nXfPUQ2KgiE5ef5P7Ck7g3MXL6O9sxumYRN3GdNdUKngM9UdkcGz8c4iNV584hEzjooC6DMa8eauQ9D+XGU23MvBsqinUZC8HC7OzhCIaCLJiY8elDhJVCf+uDAYnfkJm9DlsUA/ZMTFIMjPF/TqxkNoKy+13kRO0Q+ov9pqhjyxJQWqxdmaweKKGqYk8orcDLi5TDY7jefA0NeP8PQccxCLw0Mh0AfHhZ78XpETB2ETBxfidqKvnQu9dmvRd/dgd2k5fqpvAD3B4zP8kbjoWYTOCrB2tWtuyUHcgmWqWe95XVMLQpK2YPNXJegy9MJJEHDwdAXC0rai8NRZuwitnSw5iNvJ2oHPe8Wnjc3WsFSp2/UBHg30Z6ZW3S0s2b4fa3ZrMf1BL0lO87WO3Fkayi04evZ3NN/UYc/apWZy8vPz9kRp5ruY4euNFfkH0HG7R2653TrFACobmhmIOiTIBszDzRV5q+LQdqsLW4+W2dgdUSgGwEF6+418KLnHiikUMXcmNMfL0dnTK7E5MlEMIDx4JsMp/vW8Il7SS1EwiAGWVNUq+oxmUAwg/pknMV3c7w1fFuNae4cszpIFYdi79jVEWxwuso4jKBUDmDLZGQdS32DpF715J/7R6W1gnCZNwpqYBfD19EB6YRHa9J02PqMpFAOghQvnBePgupVovN4u/kK3obKhSRHvWFUd5qdmo+bK34o+coYRA6AFr6qfQllWMrrv9EG9MZfVC3JAK56LwHV9F6I25YF+YPbKqAEQ0POhD6M6byPm+k9DouYw1hV8A5PJJOF4W9wK9ykumP2QDwJ8vNAonn4XW9okPnITuwKghXPEc4JOygTxjXxcchrJe49I8Lw93FGZuwGVeRkYMA0iLmcfItdvx2Vx+0YSuwMgEDrNtGkr8UpEKD4rK0dpdb0Ee5r4MWqOn8G8lA9R29wCfY8BCTsKYLw7IPGznDgUAC0UxANpX9Iy3O/qgqyvj1lioemGDin7j6C1Yzgbqhuv4n3t9xI/y4nDAdBiet1xkfPxW+M13DbcMeOFBQWyLTIrhgY7vj2JH2v+slaz+ZgCoJVe7m4MYMDqY9QkLmUHFTMOXajsfj3/C+i6hmsPbh9TAHRUf1dRy7LCcygQDjj1PlccTl/Nageuozul6Fufai1VbOxwAP3Gu3hB/DNeufEvshJetgEkRUTwLGTK2Kj2LDx1TrJGsK5QJFaZCa+g8lfHs5+UjAtTbYqPgTpkjo2ZsocLcQvUsXCh0nk0oTPil23rkRq7cERXyhZt2ip4iluiJMQtULvEhep2KjzHSwJ8HmApq4RH3BPSmLz3eRHKL1yyiYM1JtQbLv+ocML6Qh4F9YeHxC1iWUCNIikmSnhzSnysO+bE/0d7/h9DXZ8X7llkrwAAAABJRU5ErkJggg==
poll.png: |-
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNpiZIACpR1dAkCqAIjjgViBgTbgARAvBOIJ9zzKPoAEGKGWgyxcD8QGDPQBF4A4EeiIC4xQn++no+XIjnBkggY7vS1ngNpZwASN84EC8Uw0THDEAAUmhgEGNHWAJq/YwDmgS8eTYYtVPBjzsbDT1wEgy4OldeChsMwsAqcjmGhpOXJUJCqY0N4B2CyHgWufXtHWAfgsL7uynWH3q9ukOwAUdPkq1gwynPwUWb726RXSEyEs8eQpWzFsBqZkXFmKEstxOgA95YJoEB/dEZRajtMBbuKqGNkG3RHUsBynA3a9vM3w6c9PDHGYI2YYBlDFcpwOuP75FUPUqRU4HeEqpkoVy/EmQnyOoJblBLMhsY4g13KiCiJCjqDEcqJLQlyOoNRykopidEdQw3JwsxzYKv5PigZQLuBj5WB48v0jVeoQFlI1gEKA2Jwx4E0yYh3wYADtf8AE7asNFFgIcsAEaDeJ3gBk5wQmaC81kc6OgHVOPzAOdPccIMAAntC9XAhEIcEAAAAASUVORK5CYII=
...
---
# Source: matrix-neodatefix-bot/templates/persistentvolumeclaim.yaml
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "matrix-neodatefix-bot"
annotations:
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
...
---
# Source: matrix-neodatefix-bot/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: "matrix-neodatefix-bot"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: "ClusterIP"
ports:
- name: "http"
port: 80
targetPort: "http"
protocol: "TCP"
selector:
app.kubernetes.io/name: matrix-neodatefix-bot
app.kubernetes.io/instance: matrix-neodatefix-bot
...
---
# Source: matrix-neodatefix-bot/templates/deployment.yaml
apiVersion: apps/v1
kind: "Deployment"
metadata:
name: matrix-neodatefix-bot
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: matrix-neodatefix-bot
app.kubernetes.io/instance: matrix-neodatefix-bot
strategy:
type: Recreate
template:
metadata:
annotations:
checksum/configmap: e2562485c3184f39461d0cdec7a81497ef67b9a091b8dcd5e3cdfd268aea289b
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
spec:
securityContext:
fsGroup: 101
fsGroupChangePolicy: Always
serviceAccountName: matrix-neodatefix-bot
containers:
- name: "widget"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot:2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96"
imagePullPolicy: IfNotPresent
env:
- name: LOG_LEVEL
value: "info"
- name: ENABLE_PRIVATE_ROOM_ERROR_SENDING
value: "false"
- name: STORAGE_FILE_DATA_PATH
value: "/app/storage"
- name: "ENABLE_CRYPTO"
value: "false"
- name: HOMESERVER_URL
value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: MEETINGWIDGET_URL
value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url"
- name: MEETINGWIDGET_COCKPIT_URL
value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/cockpit/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url"
- name: BREAKOUT_SESSION_WIDGET_URL
value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url"
- name: MATRIX_LINK_SHARE
value: "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/room/"
- name: MEETINGWIDGET_NAME
value: "Terminplaner"
- name: MEETINGWIDGET_COCKPIT_NAME
value: "Meeting Steuerung"
- name: BREAKOUT_SESSION_WIDGET_NAME
value: "Breakoutsessions"
- name: CALENDAR_ROOM_NAME
value: "Terminplaner"
- name: BOT_DISPLAYNAME
value: "Meetings Bot"
- name: OPEN_XCHANGE_MEETING_URL_TEMPLATE
value: "https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/#app=io.ox/calendar&id={{id}}&folder={{folder}}"
- name: ENABLE_GUEST_USER_POWER_LEVEL_CHANGE
value: "true"
# TODO: enable this if the room reaper is deployed
#- name: AUTO_DELETION_OFFSET
# value: 60
- name: ACCESS_TOKEN
valueFrom:
secretKeyRef:
key: access_token
name: matrix-neodatefix-bot-account
livenessProbe:
tcpSocket:
port: "http"
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
readinessProbe:
tcpSocket:
port: "http"
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 10
successThreshold: 1
ports:
- name: http
containerPort: 3000
protocol: TCP
resources:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 128Mi
volumeMounts:
- name: "data"
mountPath: "/app/storage"
- name: "config"
mountPath: "/app/conf"
- name: "widget-images"
mountPath: "/app/widget-images"
#- name: "tmp"
# mountPath: "/tmp"
volumes:
- name: "data"
persistentVolumeClaim:
claimName: matrix-neodatefix-bot
- name: config
configMap:
name: "matrix-neodatefix-bot-config"
- name: widget-images
configMap:
name: "matrix-neodatefix-bot-widget-images"
- name: "tmp"
emptyDir:
medium: "Memory"
sizeLimit: "50Mi"
...
---
# Source: matrix-neodatefix-bot/templates/ingress.yaml
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata:
name: "matrix-neodatefix-bot"
labels:
app.kubernetes.io/name: matrix-neodatefix-bot
helm.sh/chart: matrix-neodatefix-bot-3.5.1
app.kubernetes.io/instance: matrix-neodatefix-bot
app.kubernetes.io/managed-by: Helm
annotations:
spec:
ingressClassName: "nginx"
tls:
- hosts:
- "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: matrix-neodatefix-bot
port:
name: http
...
---
# Source: openproject/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: openproject
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
...
---
# Source: openproject/templates/secret_core.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "openproject-core"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
data: # reset data to make sure only keys defined below remain
stringData:
DATABASE_HOST: "postgresql"
DATABASE_PORT: "5432"
DATABASE_URL: "postgresql://openproject_user@postgresql:5432/openproject"
OPENPROJECT_SEED_ADMIN_USER_PASSWORD: "487706602e4fedcb300a24af26a25be29bc8530c"
OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: "false"
OPENPROJECT_SEED_ADMIN_USER_NAME: "OpenProject Internal Admin"
OPENPROJECT_SEED_ADMIN_USER_MAIL: "openproject-admin@swp-domain.internal"
OPENPROJECT_HTTPS: "true"
OPENPROJECT_SEED_LOCALE: "de"
OPENPROJECT_HOST__NAME: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OPENPROJECT_HSTS: "true"
OPENPROJECT_RAILS__CACHE__STORE: "memcache"
OPENPROJECT_RAILS__RELATIVE__URL__ROOT: ""
POSTGRES_STATEMENT_TIMEOUT: "120s"
...
---
# Source: openproject/templates/secret_cron_environment.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "openproject-cron-environment"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
data: # reset data to make sure only keys defined below remain
stringData:
# Additional environment variables
IMAP_HOST:
IMAP_PORT: "993"
IMAP_USERNAME:
IMAP_PASSWORD:
...
---
# Source: openproject/templates/secret_environment.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "openproject-environment"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
data: # reset data to make sure only keys defined below remain
stringData:
# Additional environment variables
OPENPROJECT_APP__TITLE: "Projekte - openDesk"
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: "9e8d27af068f15dce7b940241ddac82785935239"
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_USER: "abbb47d550ea03225cb109388f296cbc3a4b66eb"
OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER: "desc"
OPENPROJECT_EMAIL__DELIVERY__METHOD: "smtp"
OPENPROJECT_HOME__URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/"
OPENPROJECT_LOGIN__REQUIRED: "true"
OPENPROJECT_LOG__LEVEL: "info"
OPENPROJECT_MAIL__FROM: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true"
OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ISSUER: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_POST__LOGOUT__REDIRECT__URI: "https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/"
OPENPROJECT_SEED_DESIGN_ACCENT__COLOR: "#571EFA"
OPENPROJECT_SEED_DESIGN_FAVICON: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo="
OPENPROJECT_SEED_DESIGN_HEADER__BG__COLOR: "#ffffff"
OPENPROJECT_SEED_DESIGN_HEADER__ITEM__BG__HOVER__COLOR: "#f5f5f5"
OPENPROJECT_SEED_DESIGN_LOGO: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=="
OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__COLOR: "#ffffff"
OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__HOVER__BACKGROUND: "#f5f5f5"
OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__SELECTED__BACKGROUND: "#571EFA"
OPENPROJECT_SEED_DESIGN_PRIMARY__BUTTON__COLOR: "#571EFA"
OPENPROJECT_SEED_LDAP_OPENDESK_ADMIN__MAPPING: "opendeskProjectmanagementAdmin"
OPENPROJECT_SEED_LDAP_OPENDESK_BASEDN: "dc=swp-ldap,dc=internal"
OPENPROJECT_SEED_LDAP_OPENDESK_BINDPASSWORD: "9c96f85df1170aaa929a6763111ff9472b2d109f"
OPENPROJECT_SEED_LDAP_OPENDESK_BINDUSER: "uid=ldapsearch_openproject,cn=users,dc=swp-ldap,dc=internal"
OPENPROJECT_SEED_LDAP_OPENDESK_FILTER: "(&(objectClass=opendeskProjectmanagementUser)(opendeskProjectmanagementEnabled=TRUE))"
OPENPROJECT_SEED_LDAP_OPENDESK_FIRSTNAME__MAPPING: "givenName"
OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_BASE: "dc=swp-ldap,dc=internal"
OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_FILTER: "(&(objectClass=opendeskProjectmanagementGroup)(opendeskProjectmanagementEnabled=TRUE))"
OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_GROUP__ATTRIBUTE: "cn"
OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_SYNC__USERS: "true"
OPENPROJECT_SEED_LDAP_OPENDESK_HOST: "ums-ldap-server"
OPENPROJECT_SEED_LDAP_OPENDESK_LASTNAME__MAPPING: "sn"
OPENPROJECT_SEED_LDAP_OPENDESK_LOGIN__MAPPING: "uid"
OPENPROJECT_SEED_LDAP_OPENDESK_MAIL__MAPPING: "mailPrimaryAddress"
OPENPROJECT_SEED_LDAP_OPENDESK_PORT: "389"
OPENPROJECT_SEED_LDAP_OPENDESK_SECURITY: "plain_ldap"
OPENPROJECT_SEED_LDAP_OPENDESK_SYNC__USERS: "true"
OPENPROJECT_SMTP__ADDRESS: "postfix.yschmidt-opendesk-argo.svc.cluster.local"
OPENPROJECT_SMTP__AUTHENTICATION: "cram_md5"
OPENPROJECT_SMTP__DOMAIN: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true"
OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "none"
OPENPROJECT_SMTP__PASSWORD: "1884bda7fb31c726adcd094399ab63319e9ca56f"
OPENPROJECT_SMTP__PORT: "587"
OPENPROJECT_SMTP__SSL: "false"
OPENPROJECT_SMTP__USER__NAME: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OPENPROJECT_SOUVAP__NAVIGATION__SECRET: "1e2eb0fc3815d766ef1be11fb4edba676856ba52"
OPENPROJECT_SOUVAP__NAVIGATION__URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json?base=https%3A//portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OPENPROJECT_USER__DEFAULT__TIMEZONE: "Europe/Berlin"
...
---
# Source: openproject/templates/secret_memcached.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "openproject-memcached"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
data: # reset data to make sure only keys defined below remain
stringData:
OPENPROJECT_CACHE__MEMCACHE__SERVER: "memcached:11211"
...
---
# Source: openproject/templates/secret_oidc.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "openproject-oidc"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
data: # reset data to make sure only keys defined below remain
stringData:
# OpenID Connect settings
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_DISPLAY__NAME: "Keycloak"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_HOST: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_IDENTIFIER: "opendesk-openproject"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SECRET: "3621e456b58b341fe12689612e0ca7820974d274"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_AUTHORIZATION__ENDPOINT: "/realms/opendesk/protocol/openid-connect/auth"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_TOKEN__ENDPOINT: "/realms/opendesk/protocol/openid-connect/token"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_USERINFO__ENDPOINT: "/realms/opendesk/protocol/openid-connect/userinfo"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_END__SESSION__ENDPOINT: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SCOPE: "[openid,opendesk-openproject-scope]"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_ADMIN: "openproject_admin"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_LOGIN: "opendesk_username"
...
---
# Source: openproject/templates/secret_s3.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "openproject-s3"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
data: # reset data to make sure only keys defined below remain
stringData:
OPENPROJECT_ATTACHMENTS__STORAGE: fog
OPENPROJECT_FOG_CREDENTIALS_PROVIDER: AWS
OPENPROJECT_FOG_CREDENTIALS_AWS__ACCESS__KEY__ID: "openproject_user"
OPENPROJECT_FOG_CREDENTIALS_AWS__SECRET__ACCESS__KEY: "200f449601dec2cd474d0695f4f802493413f322"
OPENPROJECT_FOG_CREDENTIALS_ENDPOINT: https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
OPENPROJECT_FOG_CREDENTIALS_HOST: https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
OPENPROJECT_FOG_DIRECTORY: openproject
OPENPROJECT_FOG_CREDENTIALS_REGION: eu-west-1
OPENPROJECT_FOG_CREDENTIALS_PATH__STYLE: "true"
OPENPROJECT_FOG_CREDENTIALS_AWS__SIGNATURE__VERSION: "4"
# remove use_iam_profile fallback after some point
OPENPROJECT_FOG_CREDENTIALS_USE__IAM__PROFILE: "false"
OPENPROJECT_FOG_CREDENTIALS_ENABLE__SIGNATURE__V4__STREAMING: "true"
OPENPROJECT_DIRECT__UPLOADS: "true"
...
---
# Source: openproject/templates/service.yaml
apiVersion: "v1"
kind: "Service"
metadata:
name: openproject
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
spec:
type: ClusterIP
ports:
- port: 8080
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: openproject
app.kubernetes.io/instance: openproject
openproject/process: web
...
---
# Source: openproject/templates/cron-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: openproject-cron
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: cron
spec:
replicas: 0
strategy:
type: "Recreate"
selector:
matchLabels:
app.kubernetes.io/name: openproject
app.kubernetes.io/instance: openproject
openproject/process: cron
template:
metadata:
annotations:
# annotate pods with env value checksums so changes trigger re-deployments
checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426
checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a
checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc
checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4
checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9
checksum/env-cron-environment: cac20d0a5e2341c45cc50011b86c87bf026d9e02f1fe21c701125559ec398556
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: cron
spec:
securityContext:
fsGroup: 1000
serviceAccountName: openproject
volumes:
- name: tmp
# we can't use emptyDir due to the sticky bit issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
- name: app-tmp
# we can't use emptyDir due to the sticky bit / world writable issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
initContainers:
- name: wait-for-db
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
- secretRef:
name: openproject-cron-environment
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
command:
- bash
- /app/docker/prod/wait-for-db
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
containers:
- name: "cron"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
- secretRef:
name: openproject-cron-environment
command:
- bash
- /app/docker/prod/cron
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1"
---
# Source: openproject/templates/web-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: openproject-web
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: web
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: openproject
app.kubernetes.io/instance: openproject
openproject/process: web
template:
metadata:
annotations:
# annotate pods with env value checksums so changes trigger re-deployments
checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426
checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a
checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc
checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4
checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: web
spec:
securityContext:
fsGroup: 1000
serviceAccountName: openproject
volumes:
- name: tmp
# we can't use emptyDir due to the sticky bit issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
- name: app-tmp
# we can't use emptyDir due to the sticky bit / world writable issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
initContainers:
- name: wait-for-db
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
command:
- bash
- /app/docker/prod/wait-for-db
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
containers:
- name: "openproject"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
command:
- bash
- /app/docker/prod/web
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: "/health_checks/default"
port: 8080
httpHeaders:
# required otherwise health check will return 404 because health check is done using the Pod IP, which may cause issues with downstream variants
- name: Host
value: localhost
initialDelaySeconds: 300
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 30
successThreshold: 1
readinessProbe:
httpGet:
path: "/health_checks/default"
port: 8080
httpHeaders:
# required otherwise health check will return 404 because health check is done using the Pod IP, which may cause issues with downstream variants
- name: Host
value: localhost
initialDelaySeconds: 150
timeoutSeconds: 3
periodSeconds: 15
failureThreshold: 30
successThreshold: 1
resources:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 768Mi
---
# Source: openproject/templates/worker-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: openproject-worker-default
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: worker-default
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: openproject
app.kubernetes.io/instance: openproject
openproject/process: worker-default
template:
metadata:
annotations:
# annotate pods with env value checksums so changes trigger re-deployments
checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426
checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a
checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc
checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4
checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: worker-default
spec:
securityContext:
fsGroup: 1000
serviceAccountName: openproject
volumes:
- name: tmp
# we can't use emptyDir due to the sticky bit issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
- name: app-tmp
# we can't use emptyDir due to the sticky bit / world writable issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
initContainers:
- name: wait-for-db
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
command:
- bash
- /app/docker/prod/wait-for-db
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
containers:
- name: "openproject"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
command:
- bash
- /app/docker/prod/worker
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
- name: "OPENPROJECT_GOOD_JOB_QUEUES"
value: ""
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
resources:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.25
memory: 512Mi
---
# Source: openproject/templates/seeder-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: openproject-seeder-1
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: openproject-seeder
spec:
ttlSecondsAfterFinished: 6000
template:
metadata:
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
openproject/process: seeder
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
intents.otterize.com/service-name: openproject-seeder
spec:
securityContext:
fsGroup: 1000
volumes:
- name: tmp
# we can't use emptyDir due to the sticky bit issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
- name: app-tmp
# we can't use emptyDir due to the sticky bit / world writable issue
# see: https://github.com/kubernetes/kubernetes/issues/110835
ephemeral:
volumeClaimTemplate:
metadata:
creationTimestamp: null
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
initContainers:
- name: check-db-ready
image: "registry-1.docker.io/library/postgres:16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0"
imagePullPolicy: IfNotPresent
command: [
'sh',
'-c',
'until pg_isready -h $DATABASE_HOST -p $DATABASE_PORT -U openproject_user; do echo "waiting for database $DATABASE_HOST:$DATABASE_PORT"; sleep 2; done;'
]
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
containers:
- name: seeder
image: "registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969"
imagePullPolicy: IfNotPresent
args:
- bash
- /app/docker/prod/seeder
envFrom:
- secretRef:
name: openproject-core
- secretRef:
name: openproject-oidc
- secretRef:
name: openproject-s3
- secretRef:
name: openproject-memcached
- secretRef:
name: openproject-environment
env:
- name: OPENPROJECT_DB_PASSWORD
value: 0b4d7caf9005abcc8df53519620dd00619de27f8
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: tmp
- mountPath: /app/tmp
name: app-tmp
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
restartPolicy: OnFailure
---
# Source: openproject/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: openproject
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 100M
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
nginx.org/client-max-body-size: 100M
nginx.org/proxy-read-timeout: 60s
nginx.org/proxy-send-timeout: 60s
spec:
ingressClassName: nginx
tls:
- hosts:
- "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: "opendesk-certificates-tls"
rules:
- host: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: openproject
port:
name: http
...
---
# Source: openproject/templates/tests/test-connection.yaml
apiVersion: "v1"
kind: "Pod"
metadata:
name: "openproject-test-connection"
labels:
app.kubernetes.io/name: openproject
helm.sh/chart: openproject-9.9.0
app.kubernetes.io/instance: openproject
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: "15.5.0"
annotations:
"helm.sh/hook": test
spec:
containers:
- name: "wget"
image: "busybox"
command: ['wget']
args:
- '--no-verbose'
- '--tries=1'
- '--spider'
- 'openproject:8080/health_check'
restartPolicy: "Never"
...
---
# Source: xwiki/templates/xwiki-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: xwiki-sa
---
# Source: xwiki/templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: xwiki
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
annotations:
type: Opaque
data:
DB_PASSWORD: "Y2YwMzE3MDYzNmQxZmE4OTYxNzM3MGZlNTFhZWZjNDcwMjIxYWUyOA=="
---
# Source: xwiki/templates/configmaps.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: xwiki
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
annotations:
data:
DB_USER: "xwiki_user"
DB_HOST: "postgresql:5432"
DB_DATABASE: "xwiki"
#
---
# Source: xwiki/templates/initialization-configmaps.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: xwiki-init-scripts
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
annotations:
data:
entrypoint: |
#!/bin/bash
##
# *Experimental* solution for custom properties.
# With time we are looking other alternatives to setup this custom values.
##
# Always execute "first_start" in order to get all new values keys from future versions.
rm -f /usr/local/xwiki/data/xwiki.cfg
rm -f /usr/local/xwiki/data/xwiki.properties
rm -f /usr/local/xwiki/data/hibernate.cfg.xml
# Reuse commands/resources from default entrypoint.
source /usr/local/bin/docker-entrypoint.sh
file_env 'CONTEXT_PATH' 'ROOT'
if [ -d "/usr/local/tomcat" ]; then
export AS_PATH=/usr/local/tomcat
else
export AS_PATH=/var/lib/jetty
fi
echo "Path: ${AS_PATH}"
# Currently database preferences are replaced on hibernate (XML) file.
# To prevent errors with special XML chars, replace all for respective encoded alternative.
escapeXML() {
echo "$1" | sed -e 's/&/\&/g' -e 's/\</g' -e 's/>/\>/g' -e 's/"/\"/g' -e "s/'/\'/g"
}
if [[ -n "$DB_PASSWORD" ]]; then
export DB_PASSWORD=$(escapeXML $DB_PASSWORD)
fi
if [[ -n "$JDBC_PARAMS" ]]; then
export JDBC_PARAMS=$(escapeXML $JDBC_PARAMS)
fi
# Setup all default actions from first start
first_start
##
# On future versions, when LTS start have this method we can remove this from this script.
# This method was requested on: https://github.com/xwiki/xwiki-docker/pull/36
##
function xwiki_replace_or_add() {
local file_path="$1"
local setting="$2"
local new_value="$3"
# Check if the setting exists in the file
if grep -Eq "^ *#? *$setting=" "$file_path"; then
# If the setting exists, replace the occurrence with the new value
sed -i 's|^\( *#\? *\)'"$setting"'=.*$|'"$setting"'='"$new_value"'|g' "$file_path"
else
# If the setting doesn't exist, add it at the end of the file
echo "$setting=$new_value" >> "$file_path"
fi
}
# Add URL for Solr Remote instance
# Backward compatibility for old image
# Replace all values from keys defineded on customConfigs
# If we detect extension, we loop over the array and add them
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.UID_attr' 'uid'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.base_DN' 'dc=swp-ldap,dc=internal'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.bind_DN' 'uid=ldapsearch_xwiki,cn=users,dc=swp-ldap,dc=internal'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.bind_pass' '8072148becdef928e46f5686560bbbcd9c9a4284'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.fields_mapping' 'last_name=sn,first_name=givenName,email=mailPrimaryAddress'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.groupcache_expiration' '300'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.photo_attribute' 'jpegPhoto'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.port' '389'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.server' 'ums-ldap-server'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.update_photo' '1'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.url.protocol' 'https'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'notifications.emails.live.graceTime' '5'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.clientid' 'opendesk-xwiki'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.endpoint.token.auth_method' 'client_secret_basic'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.endpoint.userinfo.method' 'GET'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.logoutMechanism' 'rpInitiated'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.provider' 'https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.scope' 'openid,opendesk-xwiki-scope'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.secret' 'af1243a89d9b55965b6395e3ab7cc6d004dbcdab'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.skipped' 'false'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.user.nameFormater' '${oidc.user.opendesk_username._clean._lowerCase}'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.user.subjectFormater' '${oidc.user.opendesk_username._lowerCase}'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.userinfoclaims' 'xwiki_user_accessibility,xwiki_user_company,xwiki_user_displayHiddenDocuments,xwiki_user_editor,xwiki_user_usertype'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.autoStart' 'false'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.homePath' '/tmp'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.serverType' '0'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'url.trustedDomains' 'id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.contextPath' '/'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.remoteAddress' 'wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.url' 'https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/distribution/'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.base' 'https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.navigationEndpoint' 'https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json'
xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.portalSecret' '1e2eb0fc3815d766ef1be11fb4edba676856ba52'
# Replace the platform provenance to keep track of the image
sed -i 's/org.xwiki.platform:xwiki-platform-distribution-war/org.xwiki.contrib:xwiki-platform-distribution-helm-docker/' \
$AS_PATH/webapps/${CONTEXT_PATH}/META-INF/extension.xed
sed -i 's/org.xwiki.platform:xwiki-platform-distribution-docker/org.xwiki.contrib:xwiki-platform-distribution-helm-docker/' \
$AS_PATH/webapps/${CONTEXT_PATH}/META-INF/extension.xed
if [ -d "/var/lib/jetty" ]; then
echo "" > start.d/xwiki.ini
echo '-Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#571EFA' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg=@brand-primary' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode=li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px; } div#companylogo { width: 90px; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color=@brand-primary' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg=#ffffff' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color=@brand-primary' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color=@brand-primary' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color=@brand-primary' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg=#f5f5f5' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color=@brand-primary' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer=https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject=1' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate=1' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN=dc=swp-ldap,dc=internal' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter=(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes=sn,givenname,uid,mailPrimaryAddress' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport=1' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate=1' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport=globalAdmin' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from=no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.yschmidt-opendesk-argo.svc.cluster.local' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password=1884bda7fb31c726adcd094399ab63319e9ca56f' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=587' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=true' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username=opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=keycloak-bridge-auth' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme=FlamingoThemes.Iceberg' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language=de_DE' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages=de_DE' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping=xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone=Europe/Berlin' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title=Wissen - $!tdoc.displayTitle - openDesk' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port=443' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure=1' >> start.d/xwiki.ini
echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server=wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini
export JAVA_OPTIONS="${JAVA_OPTS}"
else
if (/usr/local/tomcat/bin/version.sh | grep -q 'Tomcat/8'); then
echo "Old Tomcat don't support java_opts file... Using normal props."
export JAVA_OPTS="${JAVA_OPTS} -Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=="
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#571EFA"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg=@brand-primary"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode=li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px; } div#companylogo { width: 90px; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color=@brand-primary"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg=#ffffff"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color=@brand-primary"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color=@brand-primary"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color=@brand-primary"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg=#f5f5f5"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color=@brand-primary"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer=https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject=1"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate=1"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN=dc=swp-ldap,dc=internal"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter=(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes=sn,givenname,uid,mailPrimaryAddress"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport=1"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate=1"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport=globalAdmin"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from=no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.yschmidt-opendesk-argo.svc.cluster.local"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password=1884bda7fb31c726adcd094399ab63319e9ca56f"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=587"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=true"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username=opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=keycloak-bridge-auth"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme=FlamingoThemes.Iceberg"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language=de_DE"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages=de_DE"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping=xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone=Europe/Berlin"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title=Wissen - $!tdoc.displayTitle - openDesk"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port=443"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure=1"
export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server=wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
else
## Clear contents of /tmp/java_opts.txt so that we don't add extra arguments at each pod restart.
echo "" > /tmp/java_opts.txt
echo '-Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=="' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary="#571EFA"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg="@brand-primary"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode="li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px; } div#companylogo { width: 90px; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color="@brand-primary"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg="#ffffff"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color="@brand-primary"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color="@brand-primary"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color="@brand-primary"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg="#f5f5f5"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color="@brand-primary"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer="https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject="1"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate="1"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN="dc=swp-ldap,dc=internal"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter="(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes="sn,givenname,uid,mailPrimaryAddress"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport="1"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate="1"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport="globalAdmin"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from="no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host="postfix.yschmidt-opendesk-argo.svc.cluster.local"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password="1884bda7fb31c726adcd094399ab63319e9ca56f"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port="587"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties="mail.smtp.starttls.enable=true"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username="opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService="keycloak-bridge-auth"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme="FlamingoThemes.Iceberg"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language="de_DE"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages="de_DE"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping="xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone="Europe/Berlin"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title="Wissen - $!tdoc.displayTitle - openDesk"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port="443"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure="1"' >> /tmp/java_opts.txt
echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server="wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt
export JAVA_OPTS="${JAVA_OPTS} @/tmp/java_opts.txt"
fi
fi
exec /usr/local/bin/docker-entrypoint.sh xwiki
glowroot.properties: |
data.dir=/usr/local/xwiki/data/glowroot/data
log.dir=/usr/local/xwiki/data/glowroot/log
tmp.dir=/usr/local/xwiki/data/glowroot/tmp
---
# Source: xwiki/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: xwiki
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
annotations:
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
sessionAffinity: ClientIP
selector:
app.kubernetes.io/name: xwiki
app.kubernetes.io/instance: xwiki
---
# Source: xwiki/templates/xwiki.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: xwiki
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
annotations:
spec:
replicas: 1
serviceName: xwiki
selector:
matchLabels:
app.kubernetes.io/name: xwiki
app.kubernetes.io/instance: xwiki
template:
metadata:
annotations:
# Annotations to rollout changes on configs on workload
checksum/configmap: 25831d9af41b8f070a7aa2b0e6a84e9561f8a468e5dedc0b0eab7c4ca866077f
checksum/initialization-configmaps: 9b4efa8ff1cec573de2eaa8ea1d4ef83c9e9ac8fd0539deb8cfbe11287090f9f
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
spec:
serviceAccountName: xwiki-sa
initContainers:
- name: xwiki-data-permissions
image: registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki:0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -ec
- chown -R "100:101" /usr/local/xwiki/data
securityContext:
runAsUser: 0
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 0.1
memory: 1.5Gi
volumeMounts:
- name: xwiki-data
mountPath: /usr/local/xwiki/data
containers:
- name: xwiki
image: registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki:0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335
imagePullPolicy: IfNotPresent
command: ["/bin/bash", "/configmaps/entrypoint"]
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 101
runAsNonRoot: true
runAsUser: 100
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
ports:
- containerPort: 8080
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: "xwiki"
key: DB_PASSWORD
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: xwiki
key: DB_HOST
- name: DB_USER
valueFrom:
configMapKeyRef:
name: xwiki
key: DB_USER
- name: DB_DATABASE
valueFrom:
configMapKeyRef:
name: xwiki
key: DB_DATABASE
startupProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 120
timeoutSeconds: 60
periodSeconds: 30
failureThreshold: 5
successThreshold: 1
livenessProbe:
httpGet:
path: /rest
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 10
successThreshold: 1
readinessProbe:
httpGet:
path: /rest/wikis/xwiki/spaces
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 30
failureThreshold: 10
successThreshold: 1
resources:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 0.1
memory: 1.5Gi
volumeMounts:
- name: xwiki-data
mountPath: /usr/local/xwiki/data
- name: configmaps
mountPath: /configmaps
securityContext:
fsGroup: 101
volumes:
- name: configmaps
configMap:
name: xwiki-init-scripts
- name: xwiki-data
volumeClaimTemplates:
- metadata:
name: xwiki-data
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
---
# Source: xwiki/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: xwiki
labels:
app.kubernetes.io/name: xwiki
helm.sh/chart: xwiki-1.4.4
app.kubernetes.io/instance: xwiki
app.kubernetes.io/managed-by: Helm
annotations:
haproxy-ingress.github.io/headers: X-Forwarded-Host wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 100M
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
nginx.ingress.kubernetes.io/session-cookie-expires: "1800"
nginx.ingress.kubernetes.io/session-cookie-name: XNGINX
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.org/client-max-body-size: 100M
nginx.org/proxy-read-timeout: 60s
nginx.org/proxy-send-timeout: 60s
spec:
ingressClassName: nginx
tls:
- hosts:
- "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
secretName: opendesk-certificates-tls
rules:
- host: "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: xwiki
port:
number: 80
---
# Source: impress/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: frontend-runtime-env
namespace: "yschmidt-opendesk-argo"
data:
runtime-env.js: |
window.RUNTIME_ENV = {"ICS_BASE_URL":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de","PORTAL_BASE_URL":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"};
...
---
# Source: impress/templates/backend_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: impress-backend
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: backend
annotations:
null
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: backend
---
# Source: impress/templates/frontend_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: impress-frontend
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: frontend
annotations:
null
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: frontend
---
# Source: impress/templates/media_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: impress-media
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: media
annotations:
null
spec:
type: ExternalName
externalName: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
---
# Source: impress/templates/yprovider_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: impress-y-provider
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: yProvider
annotations:
null
spec:
type: ClusterIP
ports:
- port: 443
targetPort: 4444
protocol: TCP
name: http
selector:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: yProvider
---
# Source: impress/templates/backend_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: impress-backend
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: backend
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: backend
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: backend
spec:
imagePullSecrets:
- name: impress-dockerconfig
shareProcessNamespace: false
containers:
- name: impress
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef"
imagePullPolicy: IfNotPresent
env:
- name: "AI_API_KEY"
value: ""
- name: "AI_BASE_URL"
value: ""
- name: "AI_MODEL"
value: ""
- name: "AWS_S3_ACCESS_KEY_ID"
value: "notes_user"
- name: "AWS_S3_ENDPOINT_URL"
value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "AWS_S3_SECRET_ACCESS_KEY"
value: "5c58820a84259ce3b869bfc267b53437f49d9902"
- name: "AWS_STORAGE_BUCKET_NAME"
value: "notes"
- name: "COLLABORATION_API_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/"
- name: "COLLABORATION_SERVER_ORIGIN"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "COLLABORATION_SERVER_SECRET"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
- name: "COLLABORATION_WS_URL"
value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/"
- name: "DB_HOST"
value: "postgresql"
- name: "DB_NAME"
value: "notes"
- name: "DB_PASSWORD"
value: "be74d99779cd9ad3426c25b026e0bec0784f7aff"
- name: "DB_PORT"
value: "5432"
- name: "DB_USER"
value: "notes_user"
- name: "DJANGO_ALLOWED_HOSTS"
value: "*"
- name: "DJANGO_CONFIGURATION"
value: "Production"
- name: "DJANGO_CSRF_TRUSTED_ORIGINS"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_BRAND_NAME"
value: "openDesk"
- name: "DJANGO_EMAIL_FROM"
value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_HOST"
value: "postfix"
- name: "DJANGO_EMAIL_HOST_PASSWORD"
value: "1884bda7fb31c726adcd094399ab63319e9ca56f"
- name: "DJANGO_EMAIL_HOST_USER"
value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_LOGO_IMG"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg"
- name: "DJANGO_EMAIL_PORT"
value: "25"
- name: "DJANGO_EMAIL_USE_SSL"
value: "false"
- name: "DJANGO_EMAIL_USE_TLS"
value: "false"
- name: "DJANGO_SECRET_KEY"
value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8"
- name: "DJANGO_SETTINGS_MODULE"
value: "impress.settings"
- name: "DJANGO_SITE_DOMAIN"
value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_SITE_NAME"
value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_SUPERUSER_PASSWORD"
value: "65a3226e9c23d19a7eac7573a4920d9882b5464a"
- name: "FRONTEND_THEME"
value: "openDesk"
- name: "LOGIN_REDIRECT_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "LOGIN_REDIRECT_URL_FAILURE"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "LOGOUT_REDIRECT_URL"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS"
value: "{}"
- name: "OIDC_OP_AUTHORIZATION_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth"
- name: "OIDC_OP_JWKS_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs"
- name: "OIDC_OP_LOGOUT_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout"
- name: "OIDC_OP_TOKEN_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token"
- name: "OIDC_OP_USER_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo"
- name: "OIDC_REDIRECT_ALLOWED_HOSTS"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*"
- name: "OIDC_RENEW_ID_TOKEN"
value: "False"
- name: "OIDC_RP_CLIENT_ID"
value: "opendesk-notes"
- name: "OIDC_RP_CLIENT_SECRET"
value: "0cbc7a3257db722ed76270a547c7dccf1f84db87"
- name: "OIDC_RP_SCOPES"
value: "openid opendesk-notes-scope"
- name: "OIDC_RP_SIGN_ALGO"
value: "RS256"
- name: "POSTGRES_DB"
value: "notes"
- name: "POSTGRES_PASSWORD"
value: "be74d99779cd9ad3426c25b026e0bec0784f7aff"
- name: "POSTGRES_USER"
value: "notes_user"
- name: "REDIS_URL"
value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7"
- name: "USER_OIDC_ESSENTIAL_CLAIMS"
value: "email"
- name: "USER_OIDC_FIELDS_TO_FULLNAME"
value: "given_name,family_name"
- name: "USER_OIDC_FIELD_TO_SHORTNAME"
value: "given_name"
- name: "Y_PROVIDER_API_BASE_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/"
- name: "Y_PROVIDER_API_KEY"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
ports:
- name: http
containerPort: 8000
protocol: TCP
livenessProbe:
httpGet:
path: /__heartbeat__
port: 8000
initialDelaySeconds: 10
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /__lbheartbeat__
port: 8000
initialDelaySeconds: 10
timeoutSeconds: 1
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "tmp"
emptyDir: {}
---
# Source: impress/templates/frontend_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: impress-frontend
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: frontend
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: frontend
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: frontend
spec:
imagePullSecrets:
- name: impress-dockerconfig
shareProcessNamespace: false
containers:
- name: impress
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887"
imagePullPolicy: IfNotPresent
env:
- name: "NEXT_PUBLIC_API_ORIGIN"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "NEXT_PUBLIC_MEDIA_URL"
value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "NEXT_PUBLIC_Y_PROVIDER_URL"
value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ws"
- name: "PORT"
value: "8080"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
volumeMounts:
- name: "frontend-runtime-env"
mountPath: "/usr/share/nginx/html/runtime-env.js"
subPath: "runtime-env.js"
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "frontend-runtime-env"
configMap:
name: "frontend-runtime-env"
- name: "tmp"
emptyDir: {}
---
# Source: impress/templates/yprovider_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: impress-y-provider
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: yProvider
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: yProvider
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: yProvider
spec:
imagePullSecrets:
- name: impress-dockerconfig
shareProcessNamespace: false
containers:
- name: impress
image: "registry-1.docker.io/lasuite/impress-y-provider:v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1"
imagePullPolicy: IfNotPresent
env:
- name: "COLLABORATION_LOGGING"
value: "false"
- name: "COLLABORATION_SERVER_ORIGIN"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "COLLABORATION_SERVER_SECRET"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
- name: "Y_PROVIDER_API_KEY"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
ports:
- name: http
containerPort: 4444
protocol: TCP
livenessProbe:
httpGet:
path: /ping
port: 4444
initialDelaySeconds: 10
timeoutSeconds: 1
resources:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
volumes:
- name: "tmp"
emptyDir: {}
---
# Source: impress/templates/backend_job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: impress-backend-migrate
namespace: "yschmidt-opendesk-argo"
annotations:
argocd.argoproj.io/sync-options: Replace=true,Force=true
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: backend
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: backend
spec:
imagePullSecrets:
- name: impress-dockerconfig
shareProcessNamespace: false
containers:
- name: impress
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef"
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- |
python manage.py migrate --no-input
env:
- name: "AI_API_KEY"
value: ""
- name: "AI_BASE_URL"
value: ""
- name: "AI_MODEL"
value: ""
- name: "AWS_S3_ACCESS_KEY_ID"
value: "notes_user"
- name: "AWS_S3_ENDPOINT_URL"
value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "AWS_S3_SECRET_ACCESS_KEY"
value: "5c58820a84259ce3b869bfc267b53437f49d9902"
- name: "AWS_STORAGE_BUCKET_NAME"
value: "notes"
- name: "COLLABORATION_API_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/"
- name: "COLLABORATION_SERVER_ORIGIN"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "COLLABORATION_SERVER_SECRET"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
- name: "COLLABORATION_WS_URL"
value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/"
- name: "DB_HOST"
value: "postgresql"
- name: "DB_NAME"
value: "notes"
- name: "DB_PASSWORD"
value: "be74d99779cd9ad3426c25b026e0bec0784f7aff"
- name: "DB_PORT"
value: "5432"
- name: "DB_USER"
value: "notes_user"
- name: "DJANGO_ALLOWED_HOSTS"
value: "*"
- name: "DJANGO_CONFIGURATION"
value: "Production"
- name: "DJANGO_CSRF_TRUSTED_ORIGINS"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_BRAND_NAME"
value: "openDesk"
- name: "DJANGO_EMAIL_FROM"
value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_HOST"
value: "postfix"
- name: "DJANGO_EMAIL_HOST_PASSWORD"
value: "1884bda7fb31c726adcd094399ab63319e9ca56f"
- name: "DJANGO_EMAIL_HOST_USER"
value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_LOGO_IMG"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg"
- name: "DJANGO_EMAIL_PORT"
value: "25"
- name: "DJANGO_EMAIL_USE_SSL"
value: "false"
- name: "DJANGO_EMAIL_USE_TLS"
value: "false"
- name: "DJANGO_SECRET_KEY"
value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8"
- name: "DJANGO_SETTINGS_MODULE"
value: "impress.settings"
- name: "DJANGO_SITE_DOMAIN"
value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_SITE_NAME"
value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_SUPERUSER_PASSWORD"
value: "65a3226e9c23d19a7eac7573a4920d9882b5464a"
- name: "FRONTEND_THEME"
value: "openDesk"
- name: "LOGIN_REDIRECT_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "LOGIN_REDIRECT_URL_FAILURE"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "LOGOUT_REDIRECT_URL"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS"
value: "{}"
- name: "OIDC_OP_AUTHORIZATION_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth"
- name: "OIDC_OP_JWKS_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs"
- name: "OIDC_OP_LOGOUT_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout"
- name: "OIDC_OP_TOKEN_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token"
- name: "OIDC_OP_USER_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo"
- name: "OIDC_REDIRECT_ALLOWED_HOSTS"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*"
- name: "OIDC_RENEW_ID_TOKEN"
value: "False"
- name: "OIDC_RP_CLIENT_ID"
value: "opendesk-notes"
- name: "OIDC_RP_CLIENT_SECRET"
value: "0cbc7a3257db722ed76270a547c7dccf1f84db87"
- name: "OIDC_RP_SCOPES"
value: "openid opendesk-notes-scope"
- name: "OIDC_RP_SIGN_ALGO"
value: "RS256"
- name: "POSTGRES_DB"
value: "notes"
- name: "POSTGRES_PASSWORD"
value: "be74d99779cd9ad3426c25b026e0bec0784f7aff"
- name: "POSTGRES_USER"
value: "notes_user"
- name: "REDIS_URL"
value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7"
- name: "USER_OIDC_ESSENTIAL_CLAIMS"
value: "email"
- name: "USER_OIDC_FIELDS_TO_FULLNAME"
value: "given_name,family_name"
- name: "USER_OIDC_FIELD_TO_SHORTNAME"
value: "given_name"
- name: "Y_PROVIDER_API_BASE_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/"
- name: "Y_PROVIDER_API_KEY"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
restartPolicy: Never
volumes:
- name: "tmp"
emptyDir: {}
---
# Source: impress/templates/backend_job_createsuperuser.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: impress-backend-createsuperuser
namespace: "yschmidt-opendesk-argo"
annotations:
argocd.argoproj.io/sync-options: Replace=true,Force=true
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: backend
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/component: backend
spec:
imagePullSecrets:
- name: impress-dockerconfig
shareProcessNamespace: false
containers:
- name: impress
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef"
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- |
python manage.py createsuperuser --email default.admin@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de --password 65a3226e9c23d19a7eac7573a4920d9882b5464a
env:
- name: "AI_API_KEY"
value: ""
- name: "AI_BASE_URL"
value: ""
- name: "AI_MODEL"
value: ""
- name: "AWS_S3_ACCESS_KEY_ID"
value: "notes_user"
- name: "AWS_S3_ENDPOINT_URL"
value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "AWS_S3_SECRET_ACCESS_KEY"
value: "5c58820a84259ce3b869bfc267b53437f49d9902"
- name: "AWS_STORAGE_BUCKET_NAME"
value: "notes"
- name: "COLLABORATION_API_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/"
- name: "COLLABORATION_SERVER_ORIGIN"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "COLLABORATION_SERVER_SECRET"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
- name: "COLLABORATION_WS_URL"
value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/"
- name: "DB_HOST"
value: "postgresql"
- name: "DB_NAME"
value: "notes"
- name: "DB_PASSWORD"
value: "be74d99779cd9ad3426c25b026e0bec0784f7aff"
- name: "DB_PORT"
value: "5432"
- name: "DB_USER"
value: "notes_user"
- name: "DJANGO_ALLOWED_HOSTS"
value: "*"
- name: "DJANGO_CONFIGURATION"
value: "Production"
- name: "DJANGO_CSRF_TRUSTED_ORIGINS"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_BRAND_NAME"
value: "openDesk"
- name: "DJANGO_EMAIL_FROM"
value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_HOST"
value: "postfix"
- name: "DJANGO_EMAIL_HOST_PASSWORD"
value: "1884bda7fb31c726adcd094399ab63319e9ca56f"
- name: "DJANGO_EMAIL_HOST_USER"
value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_EMAIL_LOGO_IMG"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg"
- name: "DJANGO_EMAIL_PORT"
value: "25"
- name: "DJANGO_EMAIL_USE_SSL"
value: "false"
- name: "DJANGO_EMAIL_USE_TLS"
value: "false"
- name: "DJANGO_SECRET_KEY"
value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8"
- name: "DJANGO_SETTINGS_MODULE"
value: "impress.settings"
- name: "DJANGO_SITE_DOMAIN"
value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_SITE_NAME"
value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "DJANGO_SUPERUSER_PASSWORD"
value: "65a3226e9c23d19a7eac7573a4920d9882b5464a"
- name: "FRONTEND_THEME"
value: "openDesk"
- name: "LOGIN_REDIRECT_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "LOGIN_REDIRECT_URL_FAILURE"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "LOGOUT_REDIRECT_URL"
value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS"
value: "{}"
- name: "OIDC_OP_AUTHORIZATION_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth"
- name: "OIDC_OP_JWKS_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs"
- name: "OIDC_OP_LOGOUT_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout"
- name: "OIDC_OP_TOKEN_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token"
- name: "OIDC_OP_USER_ENDPOINT"
value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo"
- name: "OIDC_REDIRECT_ALLOWED_HOSTS"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*"
- name: "OIDC_RENEW_ID_TOKEN"
value: "False"
- name: "OIDC_RP_CLIENT_ID"
value: "opendesk-notes"
- name: "OIDC_RP_CLIENT_SECRET"
value: "0cbc7a3257db722ed76270a547c7dccf1f84db87"
- name: "OIDC_RP_SCOPES"
value: "openid opendesk-notes-scope"
- name: "OIDC_RP_SIGN_ALGO"
value: "RS256"
- name: "POSTGRES_DB"
value: "notes"
- name: "POSTGRES_PASSWORD"
value: "be74d99779cd9ad3426c25b026e0bec0784f7aff"
- name: "POSTGRES_USER"
value: "notes_user"
- name: "REDIS_URL"
value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7"
- name: "USER_OIDC_ESSENTIAL_CLAIMS"
value: "email"
- name: "USER_OIDC_FIELDS_TO_FULLNAME"
value: "given_name,family_name"
- name: "USER_OIDC_FIELD_TO_SHORTNAME"
value: "given_name"
- name: "Y_PROVIDER_API_BASE_URL"
value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/"
- name: "Y_PROVIDER_API_KEY"
value: "c25d22c80c4c0728c3d3dacf268c171a1285301d"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsNonRoot: true
runAsUser: 1001
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 512Mi
volumeMounts:
- name: "tmp"
mountPath: "/tmp"
restartPolicy: Never
volumes:
- name: "tmp"
emptyDir: {}
---
# Source: impress/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: impress
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
spec:
ingressClassName: nginx
tls:
- secretName: "opendesk-certificates-tls"
hosts:
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
rules:
- host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/"
pathType: Prefix
backend:
service:
name: impress-frontend
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: impress-backend
port:
number: 80
---
# Source: impress/templates/ingress_admin.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: impress-admin
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
spec:
ingressClassName: nginx
tls:
- secretName: "opendesk-certificates-tls"
hosts:
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
rules:
- host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/admin"
pathType: Prefix
backend:
service:
name: impress-backend
port:
number: 80
- path: /static
pathType: Prefix
backend:
service:
name: impress-backend
port:
number: 80
---
# Source: impress/templates/ingress_collaboration_api.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: impress-collaboration-api
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
spec:
ingressClassName: nginx
tls:
- secretName: "opendesk-certificates-tls"
hosts:
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
rules:
- host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/collaboration/api/"
pathType: ImplementationSpecific
backend:
service:
name: impress-y-provider
port:
number: 443
service:
name: impress-y-provider
port:
number: 443
---
# Source: impress/templates/ingress_collaboration_ws.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: impress-ws
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
annotations:
nginx.ingress.kubernetes.io/auth-response-headers: Authorization, X-Can-Edit, X-User-Id
nginx.ingress.kubernetes.io/auth-url: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/documents/collaboration-auth/
nginx.ingress.kubernetes.io/enable-websocket: "true"
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-send-timeout: "86400"
nginx.ingress.kubernetes.io/upstream-hash-by: $arg_room
spec:
ingressClassName: nginx
tls:
- secretName: "opendesk-certificates-tls"
hosts:
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
rules:
- host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/collaboration/ws/"
pathType: ImplementationSpecific
backend:
service:
name: impress-y-provider
port:
number: 443
service:
name: impress-y-provider
port:
number: 443
---
# Source: impress/templates/ingress_media.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: impress-media
namespace: "yschmidt-opendesk-argo"
labels:
helm.sh/chart: impress-2.0.0
app.kubernetes.io/name: impress
app.kubernetes.io/instance: impress
app.kubernetes.io/managed-by: Helm
annotations:
nginx.ingress.kubernetes.io/auth-response-headers: Authorization, X-Amz-Date, X-Amz-Content-SHA256
nginx.ingress.kubernetes.io/auth-url: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/documents/media-auth/
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/rewrite-target: /notes/$1
nginx.ingress.kubernetes.io/session-cookie-path: /media
nginx.ingress.kubernetes.io/upstream-vhost: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
tls:
- secretName: "opendesk-certificates-tls"
hosts:
- "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
rules:
- host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
http:
paths:
- path: "/media/(.*)"
pathType: ImplementationSpecific
backend:
service:
name: impress-media
port:
number: 443
---
# Source: impress/templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend
namespace: "yschmidt-opendesk-argo"
annotations:
"helm.sh/hook": pre-install,pre-upgrade
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": before-hook-creation
stringData:
DJANGO_SUPERUSER_EMAIL: default.admin@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
DJANGO_SUPERUSER_PASSWORD: 65a3226e9c23d19a7eac7573a4920d9882b5464a
DJANGO_SECRET_KEY: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8
OIDC_RP_CLIENT_ID: opendesk-notes
OIDC_RP_CLIENT_SECRET: 0cbc7a3257db722ed76270a547c7dccf1f84db87
AI_API_KEY:
AI_BASE_URL:
---
# Source: opendesk-openproject-bootstrap/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-openproject-bootstrap"
labels:
app.kubernetes.io/name: opendesk-openproject-bootstrap
helm.sh/chart: opendesk-openproject-bootstrap-2.2.0
app.kubernetes.io/instance: opendesk-openproject-bootstrap
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: false
...
---
# Source: opendesk-openproject-bootstrap/templates/secrect.yaml
kind: "Secret"
apiVersion: "v1"
metadata:
name: "opendesk-openproject-bootstrap"
labels:
app.kubernetes.io/name: opendesk-openproject-bootstrap
helm.sh/chart: opendesk-openproject-bootstrap-2.2.0
app.kubernetes.io/instance: opendesk-openproject-bootstrap
app.kubernetes.io/managed-by: Helm
stringData:
openprojectAdminUsername: "abbb47d550ea03225cb109388f296cbc3a4b66eb"
openprojectAdminPassword: "9e8d27af068f15dce7b940241ddac82785935239"
nextcloudAdminUsername: "nextcloud"
nextcloudAdminPassword: "d132ecf836fac6a43b19341f94d5effff7edee65"
...
---
# Source: opendesk-openproject-bootstrap/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-openproject-bootstrap-bootstrap-1"
labels:
app.kubernetes.io/name: opendesk-openproject-bootstrap
helm.sh/chart: opendesk-openproject-bootstrap-2.2.0
app.kubernetes.io/instance: opendesk-openproject-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: "Sync"
argocd.argoproj.io/hook-delete-policy: "HookSucceeded"
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
labels:
app.kubernetes.io/name: opendesk-openproject-bootstrap
helm.sh/chart: opendesk-openproject-bootstrap-2.2.0
app.kubernetes.io/instance: opendesk-openproject-bootstrap
app.kubernetes.io/managed-by: Helm
annotations:
spec:
restartPolicy: "Never"
securityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: opendesk-openproject-bootstrap
containers:
- name: "opendesk-openproject-bootstrap"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
resources:
limits:
memory: 1Gi
requests:
cpu: 500m
memory: 256Mi
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap:1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d"
imagePullPolicy: IfNotPresent
command:
- "/app/entrypoint.sh"
volumeMounts:
- mountPath: "/app/temp"
name: "temp-dir"
env:
- name: "OPENPROJECT_HOST"
value: "https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "OPENPROJECT_STORAGE_NAME"
value: "Nextcloud at yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "OP_ADMIN_USERNAME"
valueFrom:
secretKeyRef:
key: "openprojectAdminUsername"
name: "opendesk-openproject-bootstrap"
- name: "OP_ADMIN_PASSWORD"
valueFrom:
secretKeyRef:
key: "openprojectAdminPassword"
name: "opendesk-openproject-bootstrap"
- name: "NEXTCLOUD_HOST"
value: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"
- name: "NC_ADMIN_USERNAME"
valueFrom:
secretKeyRef:
key: "nextcloudAdminUsername"
name: "opendesk-openproject-bootstrap"
- name: "SETUP_PROJECT_FOLDER"
value: "true"
- name: "NC_ADMIN_PASSWORD"
valueFrom:
secretKeyRef:
key: "nextcloudAdminPassword"
name: "opendesk-openproject-bootstrap"
- name: "OD_OP_BOOTSTRAP_TEMP_DIR"
value: "/app/temp"
- name: "OD_OP_BOOTSTRAP_DEBUG_ENABLED"
value: "false"
- name: "OD_OP_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START"
value: "0"
volumes:
- name: "temp-dir"
emptyDir:
sizeLimit: "20Mi"
...
---
# Source: opendesk-migrations/templates/serviceaccount.yaml
apiVersion: "v1"
kind: "ServiceAccount"
metadata:
name: "opendesk-migrations-post"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-post
app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
...
---
# Source: opendesk-migrations/templates/secret.yaml
apiVersion: "v1"
kind: "Secret"
metadata:
name: "opendesk-migrations-post-environmentdetails"
namespace: "yschmidt-opendesk-argo"
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-post
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
stringData:
environmentDetails.yaml: |
ai:
apiKey: ""
endpoint: ""
model: ""
annotations:
cassandra:
ingress: null
pod: null
serviceAccount: null
coco:
ingress: null
pod: null
serviceAccount: null
collabora:
ingress: null
pod: null
service: null
serviceAccount: null
cryptpad:
ingress: null
pod: null
serviceAccount: null
element:
common: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixNeoboardWidget:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixNeochoiceWidget:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixNeodatefixBot:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
elementMatrixNeodatefixBotBootstrap:
pod: null
serviceAccount: null
elementMatrixNeodatefixWidget:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
elementMatrixUserVerificationService:
additional: null
pod: null
service: null
serviceAccount: null
elementMatrixUserVerificationServiceBootstrap:
pod: null
serviceAccount: null
elementSynapse:
common: null
federationIngress: null
persistence: null
pod: null
service: null
serviceAccount: null
elementSynapseWeb:
common: null
ingress: null
pod: null
service: null
serviceAccount: null
elementWellKnown:
common: null
ingress: null
pod: null
service: null
serviceAccount: null
jitsi:
pod: null
serviceAccount: null
jitsiGlobal:
pod: null
jitsiJibri:
pod: null
jitsiJicofo:
pod: null
jitsiJigasi:
pod: null
jitsiJitsiPatchJVB:
serviceAccount: null
jitsiJvb:
metricsGrafana: null
metricsPrometheus: null
pod: null
service: null
jitsiProsody:
pod: null
jitsiWeb:
ingress: null
pod: null
nextcloudAio:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
nextcloudExporter:
additional: null
ingress: null
pod: null
serviceAccount: null
nextcloudNextcloudMgmt:
additional: null
pod: null
serviceAccount: null
notes:
ingressAdmin: null
ingressCollaborationAPI: null
ingressCollaborationWS: null
ingressMedia: null
serviceMedia: null
notesBackend:
migrateJob: null
pod: null
service: null
notesFrontend:
pod: null
service: null
notesYProvider:
pod: null
service: null
nubus:
additional: null
ingress: null
nubusGuardian:
authorizationApiPod: null
globalPod: null
ingressAuthorizationApi: null
ingressIngress: null
ingressManagementApi: null
ingressManagementUi: null
managementApiPod: null
managementUiPod: null
serviceAccount: null
nubusIntercomService:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
nubusKeycloak:
common: null
pod: null
service: null
serviceAccount: null
nubusKeycloakBootstrap:
additional: null
pod: null
service: null
serviceAccount: null
nubusKeycloakBootstrapNubus:
additional: null
pod: null
serviceAccount: null
nubusKeycloakExtensions:
handlerAdditional: null
handlerPod: null
handlerService: null
handlerServiceAccount: null
proxyAdditional: null
proxyIngress: null
proxyPod: null
proxyService: null
proxyServiceAccount: null
nubusLdapNotifier:
additional: null
pod: null
service: null
serviceAccount: null
nubusLdapServer:
additional: null
pod: null
service: null
serviceAccount: null
nubusNginxS3Gateway:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
nubusNotificationsApi:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusOxConnector:
pod: null
serviceAccount: null
nubusPortalConsumer:
pod: null
nubusPortalFrontend:
additional: null
ingressIngress: null
ingressRedirects: null
ingressRewrites: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusPortalServer:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusProvisioning:
additional: null
apiAdditional: null
apiPod: null
dispatcherAdditional: null
dispatcherPod: null
natsAdditional: null
natsPod: null
pod: null
prefillAdditional: null
prefillPod: null
registerConsumersAdditional: null
registerConsumersPod: null
service: null
serviceAccount: null
udmTransformerAdditional: null
udmTransformerPod: null
nubusSelfserviceConsumer:
pod: null
serviceAccount: null
nubusStackDataUms:
additional: null
pod: null
serviceAccount: null
nubusUdmListener:
pod: null
serviceAccount: null
nubusUdmRestApi:
additional: null
ingress: null
persistence: null
pod: null
service: null
serviceAccount: null
nubusUmcGateway:
ingress: null
pod: null
serviceAccount: null
nubusUmcServer:
additional: null
ingress: null
pod: null
serviceAccount: null
opendeskMigrationsPost:
additional: null
pod: null
serviceAccount: null
opendeskMigrationsPre:
additional: null
pod: null
serviceAccount: null
opendeskServicesHome:
additional: null
ingress: null
opendeskServicesOtterize:
additional: null
opendeskServicesStaticFiles:
additional: null
ingress: null
pod: null
service: null
serviceAccount: null
openproject:
ingress: null
openprojectTempVolumes: null
pod: null
seederJob: null
serviceAccount: null
openprojectBootstrap:
additional: null
pod: null
openxchangeAppsuiteCoreDocumentconverter:
pod: null
openxchangeAppsuiteCoreGuidedtours:
pod: null
openxchangeAppsuiteCoreImageconverter:
pod: null
openxchangeAppsuiteCoreMw:
gotenbergPod: null
pod: null
serviceAccount: null
updatePod: null
openxchangeAppsuiteCoreUi:
pod: null
openxchangeAppsuiteCoreUiMiddleware:
pod: null
openxchangeAppsuiteCoreUserGuide:
pod: null
openxchangeAppsuiteIngress:
appsuitebase: null
caldavWellKnownRedirect: null
carddavWellKnownRedirect: null
coreHelpRoute: null
davInfostoreRoute: null
davRootRoute: null
documentsHelpRoute: null
driveClientWindowsOxRoute: null
driveHelpRoute: null
guardApiRoute: null
guardPgpRoute: null
guardSupportApiRoute: null
httpApiRoutesAjax: null
httpApiRoutesApi: null
httpApiRoutesAppRootApi: null
httpApiRoutesAppsuiteApi: null
ingress: null
officeWebRoute: null
restRoutesAdmin: null
restRoutesAdvertisement: null
restRoutesChronos: null
restRoutesPreliminary: null
restRoutesUserfeedback: null
rootredirect: null
rt2Route: null
staticRoutesInfostore: null
staticRoutesRealtime: null
staticRoutesServlet: null
staticRoutesWebservices: null
trailslash: null
wopiServerRoute: null
openxchangeBootstrap:
additional: null
serviceAccount: null
openxchangeDovecot:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
openxchangeEnterpriseContactPicker:
appsuiteCoreMw: null
appsuiteCoreMwPod: null
appsuiteCoreMwServiceAccount: null
openxchangeNextcloudIntegrationUi:
pod: null
openxchangePostfix:
pod: null
service: null
openxchangePublicSectorUi:
pod: null
servicesExternalClamavDistributed:
clamdCommon: null
clamdPod: null
clamdService: null
clamdServiceAccount: null
freshclamCommon: null
freshclamService: null
freshclamServiceAccount: null
milterCommon: null
milterPod: null
milterService: null
milterServiceAccount: null
persistence: null
servicesExternalClamavSimple:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalDkimpy:
additional: null
pod: null
service: null
serviceAccount: null
servicesExternalMariadb:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalMemcached:
common: null
pod: null
service: null
serviceAccount: null
servicesExternalMinio:
apiIngress: null
common: null
ingress: null
persistence: null
pod: null
provisioningPod: null
serviceAccount: null
serviceHeadless: null
serviceService: null
servicesExternalPostfix:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalPostgresql:
common: null
persistence: null
pod: null
service: null
serviceAccount: null
servicesExternalRedis:
common: null
masterMaster: null
masterPersistence: null
masterPod: null
masterService: null
masterServiceAccount: null
replicaPersistence: null
replicaPod: null
replicaReplica: null
replicaService: null
replicaServiceAccount: null
secret: null
xwiki:
common: null
ingress: null
persistence: null
service: null
serviceAccount: null
antivirus:
icap:
host: null
port: 1344
milter:
host: null
port: 7357
apps:
cassandra:
enabled: false
namespace: null
certificates:
enabled: true
namespace: null
clamavDistributed:
enabled: false
namespace: null
clamavSimple:
enabled: true
namespace: null
collabora:
enabled: true
namespace: null
collaboraController:
enabled: false
namespace: null
cryptpad:
enabled: true
namespace: null
dkimpy:
enabled: false
namespace: null
dovecot:
enabled: true
namespace: null
element:
enabled: true
namespace: null
elementAdmin:
enabled: false
namespace: null
elementGroupsync:
enabled: false
namespace: null
home:
enabled: true
namespace: null
jitsi:
enabled: false
namespace: null
mariadb:
enabled: true
namespace: null
memcached:
enabled: true
namespace: null
migrations:
enabled: true
namespace: null
minio:
enabled: true
namespace: null
nextcloud:
enabled: true
namespace: null
notes:
enabled: true
namespace: null
nubus:
enabled: true
namespace: null
openproject:
enabled: true
namespace: null
oxAppSuite:
enabled: true
namespace: null
postfix:
enabled: true
namespace: null
postgresql:
enabled: true
namespace: null
redis:
enabled: true
namespace: null
staticFiles:
enabled: true
namespace: null
xwiki:
enabled: true
namespace: null
cache:
intercomService:
host: redis-headless
password: ""
port: 6379
username: default
nextcloud:
host: redis-headless
password: ""
port: 6379
tls: false
username: default
notes:
host: redis-headless
password: ""
port: 6379
openproject:
host: memcached
port: 11211
oxAppSuite:
host: redis-headless
password: ""
port: 6379
username: default
umsSelfservice:
host: memcached
port: 11211
certificate:
issuerRef:
kind: ClusterIssuer
name: letsencrypt-prod
selfSigned: false
wildcard: "false"
charts:
cassandra:
name: cassandra
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 12.0.4
certificates:
name: opendesk-certificates
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-certificates
verify: true
version: 3.1.1
clamav:
name: opendesk-clamav
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav
verify: true
version: 4.0.6
clamavSimple:
name: clamav-simple
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav
verify: true
version: 4.0.6
collabora:
name: collabora-online
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/collabora/charts-mirror
verify: true
version: 1.1.37
collaboraController:
name: cool-controller
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror
verify: false
version: 1.1.2
cryptpad:
name: cryptpad
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/charts-mirror
verify: true
version: 0.0.20
dkimpy:
name: opendesk-dkimpy-milter
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter
verify: true
version: 1.0.0
dovecot:
name: dovecot
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-dovecot
verify: true
version: 2.0.0
element:
name: opendesk-element
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
elementWellKnown:
name: opendesk-well-known
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
home:
name: opendesk-home
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-home
verify: true
version: 1.0.2
intercomService:
name: intercom-service
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/charts-mirror
verify: true
version: 2.12.0
jitsi:
name: opendesk-jitsi
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-jitsi
verify: true
version: 3.1.0
mariadb:
name: mariadb
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-mariadb
verify: true
version: 3.0.3
matrixNeoboardWidget:
name: matrix-neoboard-widget
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixNeochoiceWidget:
name: matrix-neochoice-widget
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixNeodatefixBot:
name: matrix-neodatefix-bot
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixNeodatefixWidget:
name: matrix-neodatefix-widget
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
verify: true
version: 3.5.1
matrixUserVerificationService:
name: opendesk-matrix-user-verification-service
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
memcached:
name: memcached
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 6.7.1
migrations:
name: opendesk-migrations
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-migrations
verify: true
version: 1.6.0
minio:
name: minio
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 14.10.1
nextcloud:
name: opendesk-nextcloud
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
verify: true
version: 4.0.3
nextcloudManagement:
name: opendesk-nextcloud-management
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
verify: true
version: 4.0.3
nginx:
name: nginx
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 15.9.3
nginxS3Gateway:
name: nginx-s3-gateway
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/nginx-s3-gateway
verify: true
version: 1.0.1
notes:
name: impress
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/dinum/charts/notes
verify: true
version: 2.0.0
nubus:
name: nubus
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/charts-mirror
verify: true
version: 1.8.0
opendeskAlerts:
name: opendesk-alerts
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-alerts
verify: true
version: 1.1.1
opendeskDashboards:
name: opendesk-dashboards
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-dashboards
verify: true
version: 1.1.1
opendeskKeycloakBootstrap:
name: opendesk-keycloak-bootstrap
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap
verify: true
version: 2.6.0
opendeskStaticFiles:
name: opendesk-static-files
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-static-files
verify: true
version: 4.0.1
openproject:
name: openproject
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/openproject/charts-mirror
verify: true
version: 9.9.0
openprojectBootstrap:
name: opendesk-openproject-bootstrap
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap
verify: true
version: 2.2.0
otterize:
name: opendesk-otterize
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-otterize
verify: true
version: 2.1.3
oxAppSuite:
name: appsuite-public-sector
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/charts-mirror
verify: false
version: 2.17.164
oxAppSuiteBootstrap:
name: opendesk-open-xchange-bootstrap
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
verify: true
version: 2.1.2
oxConnector:
name: ox-connector
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/charts-mirror
verify: true
version: 0.19.0
postfix:
name: postfix
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-postfix
verify: true
version: 3.0.1
postgresql:
name: postgresql
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-postgresql
verify: true
version: 2.1.2
redis:
name: redis
registry: registry.opencode.de
repository: bmi/opendesk/components/external/charts/bitnami-charts
verify: true
version: 18.6.1
synapse:
name: opendesk-synapse
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
synapseAdmin:
name: opendesk-synapse-admin
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapseAdminbotWeb:
name: opendesk-synapse-adminbot-web
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapseCreateAccount:
name: opendesk-synapse-create-account
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
synapseGroupsync:
name: opendesk-synapse-groupsync
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapsePipe:
name: opendesk-synapse-pipe
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 5.0.1
synapseWeb:
name: opendesk-synapse-web
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/charts/opendesk-element
verify: true
version: 6.1.3
xwiki:
name: xwiki
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/charts-mirror
verify: false
version: 1.4.4
cluster:
container:
engine: cri-o
networking:
cidr:
- 10.0.0.0/8
domain: cluster.local
incomingCIDR: []
ingressGatewayIP: ""
ipFamilies: DualStack
loadBalancerStatusField: ip
persistence:
readWriteMany:
enabled: false
service:
type: LoadBalancer
customization:
release:
cassandra: {}
clamav: {}
clamavSimple: {}
collaboraController: {}
collaboraOnline: {}
cryptpad: {}
dovecot: {}
intercomService: {}
jitsi: {}
mariadb: {}
matrixNeoboardWidget: {}
matrixNeochoiceWidget: {}
matrixNeodatefixBot: {}
matrixNeodatefixBotBootstrap: {}
matrixNeodatefixWidget: {}
matrixUserVerificationService: {}
matrixUserVerificationServiceBootstrap: {}
memcached: {}
migrationsPost: {}
migrationsPre: {}
minio: {}
nginxS3Gateway: {}
notes: {}
opendeskAlerts: {}
opendeskCertificates: {}
opendeskDashboards: {}
opendeskDkimpyMilter: {}
opendeskElement: {}
opendeskHome: {}
opendeskKeycloakBootstrap: {}
opendeskNextcloud: {}
opendeskNextcloudManagement: {}
opendeskOpenprojectBootstrap: {}
opendeskOpenxchangeBootstrap: {}
opendeskOtterize: {}
opendeskStaticFiles: {}
opendeskSynapse: {}
opendeskSynapseAdmin: {}
opendeskSynapseAdminbotBootstrap: {}
opendeskSynapseAdminbotPipe: {}
opendeskSynapseAdminbotWeb: {}
opendeskSynapseAuditbotBootstrap: {}
opendeskSynapseAuditbotPipe: {}
opendeskSynapseGroupsync: {}
opendeskSynapseWeb: {}
opendeskWellKnown: {}
openproject: {}
openxchange: {}
oxConnector: {}
postfix: {}
postgresql: {}
redis: {}
ums: {}
xwiki: {}
databases:
defaults:
userConnectionLimit: 100
dovecotACL:
connectionLimit: null
host: cassandra
name: dovecot_acl
password: ""
port: 9042
type: cassandra
username: dovecot_acl_user
dovecotDictmap:
connectionLimit: null
host: cassandra
name: dovecot_dictmap
password: ""
port: 9042
type: cassandra
username: dovecot_dictmap_user
keycloak:
connectionLimit: null
host: postgresql
name: keycloak
password: ""
port: 5432
type: postgresql
username: keycloak_user
keycloakExtension:
connectionLimit: null
host: postgresql
name: keycloak_extensions
password: ""
port: 5432
ssl: "false"
type: postgresql
username: keycloak_extensions_user
nextcloud:
connectionLimit: null
host: postgresql
name: nextcloud
password: ""
port: 5432
type: postgresql
username: nextcloud_user
notes:
connectionLimit: null
host: postgresql
name: notes
password: ""
port: 5432
type: postgresql
username: notes_user
openproject:
connectionLimit: null
host: postgresql
name: openproject
password: ""
port: 5432
type: postgresql
username: openproject_user
oxAppSuite:
connectionLimit: null
host: mariadb
name: configdb
password: ""
port: 3306
readHost: null
readPassword: null
readUser: null
type: mariadb
username: root
synapse:
channelBinding: prefer
clientEncoding: auto
connectTimeout: 10
connectionLimit: null
connectionPoolMax: "5"
connectionPoolMin: "3"
gssencmode: prefer
host: postgresql
keepalives: 1
keepalivesCount: 3
keepalivesIdle: 10
keepalivesInterval: 10
name: matrix
password: ""
port: 5432
replication: false
requireAuth: []
sslMinProtocolVersion: TLSv1.2
sslcompression: 0
sslmode: prefer
type: postgresql
username: matrix_user
umsGuardianManagementApi:
connectionLimit: null
host: postgresql
name: guardianmanagementapi
password: ""
port: 5432
type: postgresql
username: guardianmanagementapi_user
umsNotificationsApi:
connectionLimit: null
host: postgresql
name: notificationsapi
password: ""
port: 5432
type: postgresql
username: notificationsapi_user
umsSelfservice:
connectionLimit: 10
host: postgresql
name: selfservice
password: ""
port: 5432
type: postgresql
username: selfservice_user
xwiki:
connectionLimit: null
host: postgresql
name: xwiki
password: ""
port: 5432
type: postgresql
username: xwiki_user
debug:
cleanup:
deletePodsOnSuccess: true
deletePodsOnSuccessTimeout: 60
keepPVCOnDelete: false
keepRessourceOnDelete: true
enabled: false
enterpriseFeatures:
collabora:
autoscaling:
maxReplicas: 4
minReplicas: 1
scaleDownDisabled: false
targetCPUUtilizationPercentage: 99
targetMemoryUtilizationPercentage: 99
enterpriseKeys:
nextcloud:
subscriptionData: ""
subscriptionKey: ""
openproject:
token: null
xwiki:
opendeskEnterpriseLicense: ""
proApplicationslicense: ""
functional:
admin:
portal:
deploymentTimestamp:
enabled: true
authentication:
newDeviceLoginNotification:
enabled: true
oidc:
clientScopes: null
clients: null
realmSettings:
accessTokenLifespan: 300
clientOfflineSessionIdleTimeout: 0
clientOfflineSessionMaxLifespan: 0
clientSessionIdleTimeout: 0
clientSessionMaxLifespan: 0
offlineSessionIdleTimeout: 2592000
offlineSessionMaxLifespan: 5184000
offlineSessionMaxLifespanEnabled: false
revokeRefreshToken: false
ssoSessionIdleTimeout: 14400
ssoSessionMaxLifespan: 57600
ssoFederation:
enabled: false
enforceFederatedLogin: false
idpDetails: {}
name: My upstream IdP
twoFactor:
groups:
- foo
chat:
matrix:
profile:
allowUsersToUpdateDisplayname: true
useImmutableIdentifierForLocalpart: false
dataProtection:
jitsiRoomHistory:
enabled: true
matrixPresence:
enabled: false
externalServices:
matrix:
federation:
domainAllowList: []
enabled: true
nubus:
udmRestApi:
enabled: true
filestore:
nextcloud:
retentionObligation:
trashbin: auto
versions: auto
quota:
default: 1
sharing:
external:
enabled: false
enforcePasswords: false
expiry:
activeByDefault: true
defaultDays: 30
enforced: false
sendPasswordMail: true
internal:
expiry:
activeByDefault: false
defaultDays: 90
enforced: false
migration:
oxAppSuite:
enabled: false
portal:
enforceLogin: true
linkLegalNotice: https://opendesk.eu/impressum
linkPrivacyStatement: https://zendis.de/datenschutzerklaerung
global:
additionalMailDomains: ""
domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de
helmRegistry: ""
hosts:
adminBot: adminbot
collabora: office
cryptpad: pad
element: chat
intercomService: ics
jitsi: meet
keycloak: id
matrixNeoBoardWidget: matrix-neoboard-widget
matrixNeoChoiceWidget: matrix-neochoice-widget
matrixNeoDateFixBot: matrix-neodatefix-bot
matrixNeoDateFixWidget: matrix-neodatefix-widget
minioApi: objectstore
minioConsole: objectstore-ui
nextcloud: files
notes: notes
nubus: portal
openproject: projects
openxchange: webmail
static: static
synapse: matrix
synapseAdmin: synapse-admin
synapseFederation: matrix-federation
whiteboard: whiteboard
xwiki: wiki
imagePullPolicy: IfNotPresent
imagePullSecrets: []
imageRegistry: ""
mailDomain: ""
matrixDomain: ""
systemInformation:
releaseVersion: v1.3.2
images:
bitnamiOSShell:
registry: registry-1.docker.io
repository: bitnami/os-shell
tag: 12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0
cassandra:
registry: registry-1.docker.io
repository: bitnami/cassandra
tag: 5.0.2-debian-12-r1@sha256:9f5fd6fe3a24b7e5ea215a99a0e0d6a10d11a914d6eb8c511780271a9097f5ea
cassandraExporter:
registry: registry-1.docker.io
repository: bitnami/cassandra-exporter
tag: 2.3.8-debian-12-r31@sha256:ae861f6c8712dd32c2304c680e4564802df689a62dc4aed2f4e7cfcbba8a8051
clamd:
registry: registry-1.docker.io
repository: clamav/clamav
tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f
collabora:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk
tag: 24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f
collaboraController:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/collabora/images-mirror/cool-controller
tag: 1.1.1@sha256:8a5b79920fdf7a8eb9c1e781f480d6134a30c75f14fae3f1ecb0b607e016215c
cryptpad:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad
tag: opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17
dkimpy:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/dkimpy-milter
tag: 1.1.0@sha256:f140c7fc3fd9636addc612edd6e10f6aefa69e34ff637c95ce9036a32e44555f
dovecot:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector
tag: 2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc
dovecotBootstrap:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9
element:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin
tag: latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1
elementAdminBot:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/access_element_web
tag: v1.11.85@sha256:0e36121cbaab5a8146ef8561d8e77b38f711f855f1a353df3bb96a8d13303812
elementGroupsync:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/groupsync
tag: v0.14.0@sha256:a8cee92b9035d8cc80cc13194e4e0118c7dfbfcbc4c0ee5ac173582d0cd55846
elementHaProxy:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/haproxy
tag: 3.0-alpine@sha256:c22c8710886104a48b920306f063401f0d11811858e3c6b9d87d88a7556b2e61
elementPipe:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/pipe
tag: 6.3.1@sha256:7f487af25f220d31aa987665f9d1393b42e925c6b1a7e0458daaa91e8e7bf0c4
elementSynapseAdmin:
registry: registry.opencode.de
repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/synapse_admin
tag: v16.105.5-24.10@sha256:563979fc69162adf93f1286cf79dcbe58adf878a0e4e9332044e5ab6a7170350
elementSyncAdmins:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-element-syncadmins
tag: 1.0.3@sha256:1dea24d5f65a6f9ac63b402c772dd81dcd07a847d24845901c8a039461043097
freshclam:
registry: registry-1.docker.io
repository: clamav/clamav
tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f
icap:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/clamav-icap
tag: 0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a
intercom:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/intercom-service
tag: 2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1
jibri:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jibri
tag: stable-9955@sha256:a07b82f2758389b2071c794810145111641e78f1b768b1bbfa6d3d1dc76d3da9
jicofo:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo
tag: stable-9955@sha256:f1a1478d231bc4891b5eea06443d72187c378d5e38403bb545aab281446f8d50
jigasi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jigasi
tag: stable-9955@sha256:0e191ac39d3e7299d0bcc070fa1867cceb17fe8d92e9d5cd492aec4c268fa56f
jitsi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/web
tag: stable-9955@sha256:81fdcfa14287fe3358532c363875584d0cdd40ff4030695b713af6e60192d306
jitsiKeycloakAdapter:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter
tag: v20250314@sha256:2e24db127ab266b90b8fd371ce547e7f9619b6be3fefed30906867b1ce368697
jitsiPatchJVB:
registry: registry-1.docker.io
repository: bitnami/kubectl
tag: 1.32.0@sha256:48c81b7aaf4fabf2733a0b888960f6982181fbcd2c3f8dfcebc4a1a065631162
jvb:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jvb
tag: stable-9955@sha256:27753ac320910e04f5c4f4f628d20995ea969ea38523d90a9066adc52f9bc022
mariadb:
registry: registry-1.docker.io
repository: library/mariadb
tag: 10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f
matrixNeoBoardWidget:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget
tag: 2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5
matrixNeoChoiceWidget:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget
tag: 1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb
matrixNeoDateFixBot:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot
tag: 2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96
matrixNeoDateFixWidget:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget
tag: 1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b
matrixUserVerificationService:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service
tag: v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008
memcached:
registry: registry-1.docker.io
repository: bitnami/memcached
tag: 1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d
migrations:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-migrations
tag: 1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7
milter:
registry: registry-1.docker.io
repository: clamav/clamav
tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f
minio:
registry: registry-1.docker.io
repository: bitnami/minio
tag: 2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135
nextcloud:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud
tag: 2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4
nextcloudExporter:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter
tag: 1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0
nginxS3Gateway:
registry: registry-1.docker.io
repository: nginxinc/nginx-s3-gateway
tag: unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4
notesBackend:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-notes
tag: 1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef
notesFrontend:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-notes
tag: 1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887
notesYProvider:
registry: registry-1.docker.io
repository: lasuite/impress-y-provider
tag: v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1
nubusDataLoader:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/data-loader
tag: 0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb
nubusGuardianAuthorizationApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api
tag: 2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5
nubusGuardianManagementApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api
tag: 2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2
nubusGuardianManagementUi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui
tag: 2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf
nubusGuardianProvisioning:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-init
tag: 0.17.0@sha256:56acfc53c3d3e0a20ff77fe427ae794adbf03ccc66972c95188e0da9e87c4a62
nubusKeycloak:
registry: artifacts.software-univention.de
repository: nubus/keycloak
tag: 25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65
nubusKeycloakBootstrap:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap
tag: 0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa
nubusKeycloakExtensionHandler:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler
tag: 0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c
nubusKeycloakExtensionProxy:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy
tag: 0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056
nubusLdapNotifier:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier
tag: 0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7
nubusLdapServer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server
tag: 0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984
nubusLdapServerDhInitContainer:
registry: registry-1.docker.io
repository: natsio/nats-box
tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51
nubusLdapServerLeaderElector:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector
tag: 0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c
nubusNats:
registry: registry-1.docker.io
repository: library/nats
tag: 2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7
nubusNatsBox:
registry: registry-1.docker.io
repository: natsio/nats-box
tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51
nubusNatsReloader:
registry: registry-1.docker.io
repository: natsio/nats-server-config-reloader
tag: 0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99
nubusNotificationsApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/notifications-api
tag: 0.63.0@sha256:4c2e01e609fb83df6d090c389b5c63d4b1477bdb133b910cacf2f2a1ce1c39e1
nubusOpenPolicyAgent:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa
tag: 2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4
nubusOpendeskExtension:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nubus
tag: 1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b
nubusOpendeskExtensionA2gMapper:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper
tag: 1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d
nubusOxExtension:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-extension
tag: 0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11
nubusPortalConsumer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer
tag: 0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc
nubusPortalExtension:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-extension
tag: 0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900
nubusPortalFrontend:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update
tag: 1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b
nubusPortalServer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-server
tag: 0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27
nubusProvisioningDispatcher:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher
tag: 0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd
nubusProvisioningEventsAndConsumerApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api
tag: 0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a
nubusProvisioningPrefill:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill
tag: 0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788
nubusProvisioningUdmListener:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener
tag: 0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7
nubusProvisioningUdmTransformer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer
tag: 0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e
nubusSelfServiceConsumer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation
tag: 0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0
nubusUdmRestApi:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api
tag: 0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2
nubusUmcGateway:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway
tag: 0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1
nubusUmcServer:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-server
tag: 0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d
nubusUmcServerProxy:
registry: registry-1.docker.io
repository: library/traefik
tag: 3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e
nubusWaitForDependency:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency
tag: 0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8
opendeskKeycloakBootstrap:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap
tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7
opendeskStaticFiles:
registry: registry-1.docker.io
repository: library/nginx
tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4
openproject:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/openproject/images-mirror/open_desk
tag: 15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969
openprojectBootstrap:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap
tag: 1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d
openprojectDbInit:
registry: registry-1.docker.io
repository: library/postgres
tag: 16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0
openxchangeBootstrap:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803
openxchangeCoreGuidedtours:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours
tag: 8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a
openxchangeCoreMW:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector
tag: 8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2
openxchangeCoreUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui
tag: 8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f
openxchangeCoreUIMiddleware:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware
tag: 2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3
openxchangeCoreUserGuide:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide
tag: 8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5
openxchangeDocumentConverter:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter
tag: 8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c
openxchangeGotenberg:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg
tag: 8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172
openxchangeGuardUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui
tag: 8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b
openxchangeImageConverter:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter
tag: 8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372
openxchangeNextcloudIntegrationUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui
tag: 1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e
openxchangePublicSectorUI:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui
tag: 2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6
oxConnector:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone
tag: 0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e
postfix:
registry: registry.opencode.de
repository: bmi/opendesk/components/platform-development/images/postfix
tag: 3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d
postfixBootstrap:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9
postgresql:
registry: registry-1.docker.io
repository: library/postgres
tag: 15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b
prosody:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/nordeck/images-mirror/prosody
tag: stable-9955@sha256:fa66872338c7c3b6fdb1f1a67ad770f2b62948f4193b91a58f12c0aa5ca2e783
redis:
registry: registry-1.docker.io
repository: bitnami/redis
tag: 7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0
synapse:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/synapse
tag: v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc
synapseCreateUser:
registry: registry-1.docker.io
repository: alpine/k8s
tag: 1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619
synapseGuestModule:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module
tag: 1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea
synapseWeb:
registry: registry-1.docker.io
repository: rapidfort/haproxy-official
tag: 2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c
wellKnown:
registry: registry-1.docker.io
repository: library/nginx
tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4
xwikiMariadb:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki
tag: 0.25-mariadb-jetty-alpine@sha256:7175ef5e454b4eb0f6fd6a92a9503d8a680db3ca97b25c3a4eedac9c9bfbcdaf
xwikiPostgres:
registry: registry.opencode.de
repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki
tag: 0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335
ingress:
enabled: true
ingressClassName: nginx
parameters:
bodySize:
collabora: 100M
element: 100M
nextcloud: 100M
openproject: 100M
oxAppSuite: 100M
xwiki: 100M
bodyTimeout:
collabora: 600
element: 60
nextcloud: 600
openproject: 60
oxAppSuite: 60
xwiki: 60
tls:
enabled: true
secretName: opendesk-certificates-tls
ldap:
baseDn: dc=swp-ldap,dc=internal
host: ums-ldap-server
notifierHost: ums-ldap-notifier
monitoring:
grafana:
dashboards:
annotations: null
enabled: false
labels:
grafana_dashboard: "1"
prometheus:
podMonitors:
enabled: false
labels:
release: kube-prometheus-stack
prometheusRules:
annotations: {}
enabled: false
labels:
release: kube-prometheus-stack
serviceMonitors:
enabled: false
labels:
release: kube-prometheus-stack
objectstores:
dovecot:
bucket: dovecot
endpoint: ""
pathStyle: true
port: 443
region: eu-west-1
secretKey: ""
storageClass: STANDARD
useSSL: true
username: dovecot_user
migrations:
bucket: migrations
endpoint: ""
pathStyle: true
port: 443
region: eu-west-1
secretKey: ""
storageClass: STANDARD
useSSL: true
username: migration_user
nextcloud:
bucket: nextcloud
endpoint: ""
pathStyle: true
port: 443
region: eu-west-1
secretKey: ""
storageClass: STANDARD
useSSL: true
username: nextcloud_user
notes:
bucket: notes
endpoint: ""
port: 443
secretKey: ""
username: notes_user
nubus:
bucket: ums
endpoint: ""
region: eu-west-1
secretKey: ""
username: ums_user
openproject:
bucket: openproject
directUploads: true
enableSignatureV4Streaming: true
endpoint: ""
pathStyle: true
region: eu-west-1
secretKey: ""
useIamProfile: false
username: openproject_user
persistence:
storageClassNames:
RWO: ""
RWX: ""
storages:
cassandra:
commitLogsize: 256Mi
size: 1Gi
storageClassName: null
clamav:
size: 1Gi
storageClassName: null
dovecot:
size: 1Gi
storageClassName: null
mariadb:
size: 1Gi
storageClassName: null
matrixNeoDateFixBot:
size: 1Gi
storageClassName: null
minio:
size: 10Gi
storageClassName: null
nubusLdapServerData:
size: 1Gi
storageClassName: null
nubusPortalConsumer:
size: 1Gi
storageClassName: null
nubusProvisioningNats:
size: 1Gi
storageClassName: null
oxConnector:
size: 1Gi
storageClassName: null
postfix:
size: 1Gi
storageClassName: null
postgresql:
size: 1Gi
storageClassName: null
prosody:
size: 1Gi
storageClassName: null
redis:
size: 1Gi
storageClassName: null
synapse:
size: 1Gi
storageClassName: null
xwiki:
size: 1Gi
storageClassName: null
platform:
realm: opendesk
replicas:
cassandra: 1
clamav: 1
clamd: 1
collabora: 1
collaboraController: 1
cryptpad: 1
dkimpy: 1
dovecot: 1
element: 1
freshclam: 1
icap: 1
intercomService: 1
jibri: 1
jicofo: 1
jigasi: 1
jitsi: 1
jitsiKeycloakAdapter: 1
jvb: 1
keycloak: 1
mariadb: 1
matrixNeoBoardWidget: 1
matrixNeoChoiceWidget: 1
matrixNeoDateFixBot: 1
matrixNeoDateFixWidget: 1
matrixUserVerificationService: 1
memcached: 1
milter: 1
minio: 1
nextcloud: 1
nextcloudExporter: 1
nginxS3Gateway: 1
notesBackend: 1
notesFrontend: 1
notesYProvider: 1
opendeskStaticFiles: 1
openprojectWeb: 1
openprojectWorker: 1
openxchangeCoreDocumentConverter: 1
openxchangeCoreGuidedtours: 1
openxchangeCoreImageConverter: 1
openxchangeCoreMW: 1
openxchangeCoreUI: 1
openxchangeCoreUIMiddleware: 1
openxchangeCoreUserGuide: 1
openxchangeGotenberg: 1
openxchangeGuardUI: 1
openxchangeNextcloudIntegrationUI: 1
openxchangePluginsUI: 1
openxchangePublicSectorUI: 1
oxConnector: 1
postfix: 1
postgres: 1
redis: 1
synapse: 1
synapseWeb: 1
umsGuardianAuthorizationApi: 1
umsGuardianManagementApi: 1
umsGuardianManagementUi: 1
umsGuardianOpenPolicyAgent: 1
umsKeycloakExtensionsHandler: 1
umsKeycloakExtensionsProxy: 1
umsLdapNotifier: 1
umsLdapServerPrimary: 2
umsLdapServerProxy: 2
umsLdapServerSecondary: 2
umsNotificationsApi: 1
umsPortalConsumer: 1
umsPortalFrontend: 1
umsPortalServer: 1
umsProvisioningApi: 1
umsProvisioningDispatcher: 1
umsProvisioningNats: 1
umsProvisioningPrefill: 1
umsProvisioningUdmTransformer: 1
umsSelfserviceConsumer: 1
umsUdmListener: 1
umsUdmRestApi: 1
umsUmcGateway: 1
umsUmcServer: 1
umsUmcServerProxy: 1
wellKnown: 1
xwiki: 1
repositories:
clamav:
auth: {}
customURLs:
- scheme: https
url: ftp.swin.edu.au/sanesecurity/badmacro.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/blurl.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_js.cdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/foxhole_js.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/hackingteam.hsb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/junk.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/jurlbl.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/jurlbla.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/lott.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/malwarehash.hsb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/phish.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/phishtank.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/porcupine.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/rogue.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/scam.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/shelter.ldb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spamattach.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spamimg.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spear.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/spearl.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_malware.hdb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb
- scheme: https
url: ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb
- scheme: https
url: urlhaus.abuse.ch/downloads/urlhaus.ndb
mirror:
scheme: https
url: clamavdb.c3sl.ufpr.br
helm:
registryOpencodeDe: ""
registryOpencodeDeEnterprise: registry.opencode.de
image:
dockerHub: ""
registryOpencodeDe: ""
registryOpencodeDeEnterprise: ""
resources:
cassandra:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1Gi
clamd:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.1
memory: 1.5Gi
collabora:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 512Mi
collaboraController:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
cryptpad:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
dkimpy:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
dovecot:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
element:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
freshclam:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 96Mi
icap:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
intercomService:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 64Mi
jibri:
limits:
cpu: 99
memory: 3Gi
requests:
cpu: 0.1
memory: 384Mi
jicofo:
limits:
cpu: 99
memory: 3584Mi
requests:
cpu: 0.1
memory: 256Mi
jigasi:
limits:
cpu: 99
memory: 3584Mi
requests:
cpu: 0.1
memory: 256Mi
jitsi:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 32Mi
jitsiKeycloakAdapter:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.01
memory: 48Mi
jvb:
limits:
cpu: 99
memory: 3584Mi
requests:
cpu: 0.1
memory: 384Mi
mariadb:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 384Mi
matrixNeoBoardWidget:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 48Mi
matrixNeoChoiceWidget:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
matrixNeoDateFixBot:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 128Mi
matrixNeoDateFixWidget:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
matrixUserVerificationService:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
memcached:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
milter:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.1
memory: 16Mi
minio:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 256Mi
nextcloud:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
nextcloudCron:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 512Mi
nextcloudExporter:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
nginxS3Gateway:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 100m
memory: 16Mi
notesBackend:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 512Mi
notesFrontend:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 32Mi
notesYProvider:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 128Mi
opendeskKeycloakBootstrap:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
opendeskStaticFiles:
limits:
cpu: 99
memory: 64Mi
requests:
cpu: 0.01
memory: 16Mi
openproject:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 768Mi
openprojectAppInit:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
openprojectDbInit:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
openprojectSeederJob:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.1
memory: 256Mi
openprojectWorkers:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.25
memory: 512Mi
openxchangeCoreDocumentConverter:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.25
memory: 1.25Gi
openxchangeCoreGuidedtours:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangeCoreImageConverter:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.5
memory: 1.25Gi
openxchangeCoreMW:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 1
memory: 1.25Gi
openxchangeCoreUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangeCoreUIMiddleware:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.5
memory: 192Mi
openxchangeCoreUIMiddlewareUpdater:
limits:
cpu: 99
memory: 768Mi
requests:
cpu: 0.5
memory: 192Mi
openxchangeCoreUserGuide:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.02
memory: 32Mi
openxchangeGotenberg:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.05
memory: 32Mi
openxchangeGuardUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangeNextcloudIntegrationUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
openxchangePluginsUI:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.05
memory: 32Mi
openxchangePublicSectorUI:
limits:
cpu: 99
memory: 96Mi
requests:
cpu: 0.01
memory: 32Mi
oxConnector:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 64Mi
postfix:
limits:
cpu: 99
memory: 128Mi
requests:
cpu: 0.1
memory: 16Mi
postgresql:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
prosody:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 32Mi
redis:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
synapse:
limits:
cpu: 99
memory: 4Gi
requests:
cpu: 0.5
memory: 256Mi
synapseWeb:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 64Mi
umsGuardianAuthorizationApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsGuardianManagementApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsGuardianManagementUi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsKeycloak:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 512Mi
umsKeycloakBootstrap:
limits:
cpu: 99
memory: 512Mi
requests:
cpu: 0.1
memory: 256Mi
umsKeycloakExtensionHandler:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
umsKeycloakExtensionProxy:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 48Mi
umsLdapNotifier:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsLdapServer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsNotificationsApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsOpenPolicyAgent:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalConsumer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalConsumerDependencies:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalFrontend:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsPortalServer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsProvisioningApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 100Mi
umsProvisioningDispatcher:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsProvisioningNats:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 128Mi
umsProvisioningPrefill:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsProvisioningRegisterConsumers:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
umsProvisioningUdmTransformer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 64Mi
umsSelfserviceConsumer:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsStackDataUms:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUdmListener:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUdmRestApi:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUdmRestApiInit:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUmcGateway:
limits:
cpu: 99
memory: 1Gi
requests:
cpu: 0.1
memory: 256Mi
umsUmcServer:
limits:
cpu: 99
memory: 2Gi
requests:
cpu: 0.1
memory: 256Mi
wellKnown:
limits:
cpu: 99
memory: 256Mi
requests:
cpu: 0.1
memory: 32Mi
xwiki:
limits:
cpu: 99
memory: 8Gi
requests:
cpu: 0.1
memory: 1.5Gi
sample:
withTemplating: ""
withoutTemplating: my_value
seLinuxOptions:
cassandra: null
clamav: null
clamavSimple: null
clamd: null
collabora: null
collaboraController: null
cryptpad: null
dkimpy: null
dovecot: null
element: null
freshclam: null
icap: null
intercom: null
jicofo: null
jigasi: null
jitsi: null
jitsiKeycloakAdapter: null
jitsiPatchJVB: null
jvb: null
mariadb: null
matrixNeoBoardWidget: null
matrixNeoChoiceWidget: null
matrixNeoDateFixBot: null
matrixNeoDateFixWidget: null
matrixUserVerificationService: null
memcached: null
migrations: null
milter: null
minio: null
nextcloud: null
nextcloudExporter: null
nextcloudManagement: null
notesBackend: null
notesFrontend: null
notesYProvider: null
opendeskKeycloakBootstrap: null
opendeskStaticFiles: null
openproject: null
openprojectBootstrap: null
openprojectDbInit: null
openxchangeBootstrap: null
openxchangeCoreGuidedtours: null
openxchangeCoreMW: null
openxchangeCoreUI: null
openxchangeCoreUIMiddleware: null
openxchangeCoreUserGuide: null
openxchangeDocumentConverter: null
openxchangeGotenberg: null
openxchangeGuardUI: null
openxchangeImageConverter: null
openxchangeNextcloudIntegrationUI: null
openxchangePluginsUI: null
openxchangePublicSectorUI: null
oxConnector: null
postfix: null
postgresql: null
prosody: null
redis: null
synapse: null
synapseCreateUser: null
synapseGuestModule: null
synapseWeb: null
umsGuardianAuthorizationApi: null
umsGuardianManagementApi: null
umsGuardianManagementUi: null
umsGuardianOpenPolicyAgent: null
umsKeycloak: null
umsKeycloakBootstrap: null
umsKeycloakExtensionHandler: null
umsKeycloakExtensionProxy: null
umsLdapNotifier: null
umsLdapServer: null
umsNotificationsApi: null
umsPortalConsumer: null
umsPortalFrontend: null
umsPortalServer: null
umsProvisioning: null
umsProvisioningNats: null
umsSelfserviceConsumer: null
umsStackDataUms: null
umsUdmListener: null
umsUdmRestApi: null
umsUmcGateway: null
umsUmcServer: null
wellKnown: null
xwiki: null
secrets:
cassandra:
dovecotACLUser: c89fe1500bb39e79ca949a197a7266009a861e86
dovecotDictmapUser: 6e6db3489ebc6f39bfcd77050885196dba3899c6
rootPassword: af7a37694032f6e8072b001b15ada3bbb315317a
centralnavigation:
apiKey: 1e2eb0fc3815d766ef1be11fb4edba676856ba52
certificates:
password: d4434074a779300dbbef2c812c66fbba163e3818
collabora:
adminPassword: 1f18028954368652aa70c5498a52f194e721b145
dovecot:
doveadm: 2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9
intercom:
secret: 3eb73e36131cd6a817564c2144363875cf63a490
synapseAsToken: f4a859990d1d37276a77e88ccd1e67d158b5e18f
jitsi:
jibriRecorderPassword: b83c2f95314c17ce17b471dd2ec6608df5ee72ee
jibriXmppPassword: 76d4cf37e97b5fc5e637ac4b916e6c4cbb0d8abf
jicofoAuthPassword: 888d06581d177bf49018de077e5acea91fffbefb
jicofoComponentPassword: 791dc50a4a70ee7a307f01d1789a80406de63dff
jigasiXmppPassword: 457d88f74b34443bde192b0b20df915103200da4
jvbAuthPassword: e1094c9de9dfdc7ebf32f9a442780cd50f7fa0ee
jwtAppSecret: d26cc08b285a55fb53cc6a05734beecc4d1683ab
keycloak:
adminPassword: 81d3190e7a7467137ccb11c6fdd2c296986275db
clientSecret:
as8oidc: ba9c972d28385e400bc71a5869b8219ec42afb45
dovecot: b4b4e59939b23669b1287c722376441b0bdcddfa
guardian: cdfd791d2b9460c15334d4b8e46df698b3e3bd9f
intercom: d42f6afee33e28f01222383c86e8741b98e14924
jitsi: 6dfdd4ee34e8b7ceebc7406b4113faea8738dc73
matrix: b4f6604310ebd2d06b5fc8832ae1095e43481b04
ncoidc: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8
notes: 0cbc7a3257db722ed76270a547c7dccf1f84db87
openproject: 3621e456b58b341fe12689612e0ca7820974d274
xwiki: af1243a89d9b55965b6395e3ab7cc6d004dbcdab
mariadb:
nextcloudUser: 2ab459d441e9967df1d0a5d1844d230b490515ea
openxchangeUser: 9778a34a657fc40e8f7e16bea4fd84d8e64e224c
rootPassword: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59
xwikiUser: d6d97039490cb8fb1179f816c3220b92b8f270bb
matrixAdminBot:
backupPassphrase: 7657d0355bb64ec8051bc353bd554708c3707b7a
password: 1a5a01b8ec8961a12669d1261a8ae78211660ec4
synapseAsToken: 614986fefd100bb4341c94a6d7bb201062eed05f
matrixAuditBot:
backupPassphrase: 12449fcf240e35921b93dc71bcf5946837c9fa0a
password: 76fd3d48911fb1e18c6e477c922339279268debd
synapseAsToken: bab5234abc7d477fed1a77166efd648f06db2f31
matrixGroupsync:
synapseAsToken: 15a3f24e76b700ff911e24224a69098b4f0d4164
matrixNeoDateFixBot:
password: f14e2756afd0fba205bd037f1d2363e7cedc8f89
matrixUserVerificationService:
password: 3187b7b18610762c770a46421965e3a7e6ce93f7
minio:
dovecotUser: a96922dd49c5ef516acca3aaf28ef92d0ae68174
migrationsUser: 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8
nextcloudUser: cd58fb1bf965a7605e316b394f11ae9c67b3220f
notesUser: 5c58820a84259ce3b869bfc267b53437f49d9902
openprojectUser: 200f449601dec2cd474d0695f4f802493413f322
rootPassword: 3c80db94b61453066c9b969361de14f66d5a611b
umsUser: 915f15805278ef774a1cf3abfa6b8623c1fa4544
nats:
natsAdminPassword: f076a4d9fceeea85cfb81f8769f3adf01e07bdc5
nextcloud:
adminPassword: d132ecf836fac6a43b19341f94d5effff7edee65
metricsToken: 53514b7a8729d5b3a6acdc6295ae3694f19065f9
notes:
collaborationSecret: c25d22c80c4c0728c3d3dacf268c171a1285301d
djangoSecretKey: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8
superuser: 65a3226e9c23d19a7eac7573a4920d9882b5464a
nubus:
guardian:
udmPassword: c5f71556f038329831204aa6a6f717f8ef0da6c5
ldapSearch:
dovecot: 40290e376095d33c0c650723efa007abec1ee3fd
element: 96380258a941863a5f9ecf74f3f88f1b563cae35
keycloak: 6f85092e969e10c851eef49367019d1e02a4a8a0
nextcloud: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0
openproject: 9c96f85df1170aaa929a6763111ff9472b2d109f
ox: 57356bf92e475164a8c4522dfd8453bb162094d4
xwiki: 8072148becdef928e46f5686560bbbcd9c9a4284
ldapSecret: b63d4de0d8766a932cad776066f76211906f8967
masterpassword: OpenDeskTest
portalConsumer:
provisioningApiPassword: 285e53cfa767e8788935963e6d60186f31a36879
provisioning:
api:
adminPassword: cb586a0ffaae0ed919024f900f871979bbcd1521
natsPassword: 95d501c0387cf0eec31aa80bb17f95f830a6251d
prefillPassword: b9a5a15f7e8c3101852f76d50e55ca9c9da7de10
udmTransformerPassword: 4aee10e27a9997767d5c22f7915d1549b6d08c93
dispatcherNatsPassword: b4b9a0246a4ad460f600be8b77af5861cde06201
prefillNatsPassword: 9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d
udmListenerNatsPassword: 0acadb5b0a2e885081a0ad98d44c0884c6aa517e
udmTransformerNatsPassword: 89a6741df85e8725261ad4fcc3c49ac7af505252
selfserviceConsumer:
provisioningApiPassword: 903594f7a3da64ac8573b35933f0546f2fb4d1e0
systemAccounts:
administratorPassword: 937393b22852fc828b0d68283dddcb9f8fb97411
sysIdpUserPassword: ae632ba815a15fbff51ba5bfb4a9490a12293bf6
openproject:
adminPassword: 487706602e4fedcb300a24af26a25be29bc8530c
apiAdminPassword: 9e8d27af068f15dce7b940241ddac82785935239
apiAdminUsername: abbb47d550ea03225cb109388f296cbc3a4b66eb
oxAppSuite:
adminPassword: 818f26bf8665480c7e1e2cedfaded285ac1c8b16
basicAuthPassword: 301711fcb8af664af271411cbf403d07f328712d
cookieHashSalt: 6da47cf7c319d398ae4c3a4823d54d6024e36fd0
hzGroupPassword: 6e1ec5fff93ffe194feaec82ae14836c3c33fcb8
jolokiaPassword: 2201ebdc53a32254a877e5055dcf0cf402630294
migrationsMasterPassword: 1748a0b8a43268f79f9b5a1d27be603ca563702c
oxguardMC: MCYjJmMmY3ZjVlZTFhOGEzYzY4ZDA=
oxguardRC: RCYThlMzYwMmNlMTM3MDA3NjM3Y2Q=
sessiondEncryptionKey: 43a02b231cc7515d147729011e55d33dbb7a10ff
shareCryptKey: 91281f20e0096f5ce2794799158ac91595386521
synapseAsToken: 5dbaa82eda85bb25f7963063b327555e3f3a821d
oxConnector:
provisioningApiPassword: 5b25d2be2690ee3acf32a4f93006e8010ff4bbd2
postfix:
opendeskSystemPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f
postgresql:
keycloakExtensionUser: a7125d58b42fc935fd603c362ddecbfafd92bca0
keycloakUser: 2a27e8e8f1148830c04a97d765173021337b738e
matrixUser: 5cd0a266029154912dd660f748137982a924e6f5
nextcloudUser: 0c6b73606d239fe1aba0b3f28ada476e3a58fa2f
notesUser: be74d99779cd9ad3426c25b026e0bec0784f7aff
openprojectUser: 0b4d7caf9005abcc8df53519620dd00619de27f8
postgresUser: e5c38aa93bd3191b54a288db3e820c103ebb52e0
umsGuardianManagementApiUser: 37b03322fc23defff213fe18e95448bd27f92652
umsNotificationsApiUser: d1f34090031fd52de9518c2665090822a0d1e17b
umsSelfserviceUser: 09af664fe11f675880a6dc980f0276f70d001104
xwikiUser: cf03170636d1fa89617370fe51aefc470221ae28
redis:
password: 07c524f0d3f95b4d03fea54ea10cfb848bdb355e
synapse:
registrationSharedSecret: fc72f9f14ac53672b134f6cbfa64f90bf866dfc5
whiteboard:
apiKey: 88f87d464a348ef695e42b91cc89f377b90892f4
xwiki:
superadminpassword: ae3a28d06563fbc8d1e7f00485a92d38616a7551
security:
clusterPostfix:
enabled: false
namespace: ""
ingressController:
namespace: ingress-nginx
podSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
otterizeIntents:
enabled: false
service:
type:
dovecot: null
jitsiVideoBridge: null
postfix: null
sip:
jigasi:
enabled: false
password: null
port: "5060"
server: ""
transport: TCP
uri: ""
smtp:
dkim:
key:
secret:
key: ""
name: ""
value: ""
selector: rsa
useED25519: false
host: ""
localpartNoReply: no-reply
password: ""
port: 587
username: ""
technical:
collabora:
numPrespawnChildren: 4
turn:
credentials: ""
server:
host: ""
port: "3478"
tls:
host: ""
port: "5349"
transport: udp
...
---
# Source: opendesk-migrations/templates/role.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "Role"
metadata:
name: opendesk-migrations-post
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-post
app.kubernetes.io/managed-by: Helm
rules:
#
# All Migrations: Allow self management of configmap
#
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["create"]
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["migrations-status"]
verbs: ["get", "patch"]
#
# run_4.py
#
# Delete StatefulSet of Nubus Portal Consumer
- apiGroups: ["apps"]
resources: ["statefulsets"]
resourceNames: ["ums-portal-consumer"]
verbs: ["delete"]
# Delete PVC of Nubus Portal Consumer to allow running as non-root
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
resourceNames: ["group-membership-cache-ums-portal-consumer-0"]
verbs: ["delete"]
# Execute slacpcat in LDAP Pod
- apiGroups: [""]
resources: ["pods/exec"]
resourceNames: ["ums-provisioning-nats-0"]
verbs: ["get", "create"]
# Restart of Deployments
- apiGroups: ["apps"]
resources: ["deployments"]
resourceNames: ["ums-provisioning-udm-transformer"]
verbs: ["update", "patch"]
# Restart of StatefulSets
- apiGroups: ["apps"]
resources: ["statefulsets"]
resourceNames: ["ums-provisioning-udm-listener"]
verbs: ["update", "patch"]
# Delete the Ingress
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
resourceNames: ["ums-minio-rewrites"]
verbs: ["delete"]
...
---
# Source: opendesk-migrations/templates/rolebinding.yaml
apiVersion: "rbac.authorization.k8s.io/v1"
kind: "RoleBinding"
metadata:
name: opendesk-migrations-post
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-post
app.kubernetes.io/managed-by: Helm
roleRef:
apiGroup: "rbac.authorization.k8s.io"
kind: "Role"
name: opendesk-migrations-post
subjects:
- kind: "ServiceAccount"
name: opendesk-migrations-post
...
---
# Source: opendesk-migrations/templates/job.yaml
apiVersion: "batch/v1"
kind: "Job"
metadata:
name: "opendesk-migrations-post-1"
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-post
app.kubernetes.io/managed-by: Helm
annotations:
argocd.argoproj.io/hook: Sync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
spec:
ttlSecondsAfterFinished: 60
template:
metadata:
annotations:
labels:
app.kubernetes.io/name: opendesk-migrations
helm.sh/chart: opendesk-migrations-1.6.0
app.kubernetes.io/instance: opendesk-migrations-post
app.kubernetes.io/managed-by: Helm
spec:
restartPolicy: "Never"
securityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
serviceAccountName: opendesk-migrations-post
containers:
- name: "opendesk-migrations"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seLinuxOptions: null
seccompProfile:
type: RuntimeDefault
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7"
imagePullPolicy: IfNotPresent
command:
- "/app/odmigs.py"
volumeMounts:
- name: "environmentdetails-volume"
mountPath: "/app/etc/"
readOnly: true
resources:
limits:
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
env:
- name: "MIGRATIONS_LOGLEVEL"
value: "INFO"
- name: "MIGRATIONS_CLEANUP"
value: "false"
- name: "MIGRATIONS_STAGE"
value: "POST"
- name: "MIGRATIONS_RUN_ID"
value: "4"
- name: "MIGRATIONS_NAMESPACE"
value: "yschmidt-opendesk-argo"
- name: "MIGRATIONS_FAIL_ON_UNEXPECTED_STATE"
value: "true"
volumes:
- name: "environmentdetails-volume"
secret:
secretName: "opendesk-migrations-post-environmentdetails"
...