From 5a1e6494a8f5233c26e94e881286c75a4d7b6efa Mon Sep 17 00:00:00 2001 From: Ruben Hensen Date: Fri, 13 Sep 2024 01:47:35 +0200 Subject: [PATCH] Deploy mailu --- apps/mailu/helm-mailu.yaml | 25 + apps/mailu/mailu-es.yaml | 17 + apps/mailu/values.yaml | 2999 ++++++++++++++++++++++++++++++ apps/templates/mailu-folder.yaml | 19 + 4 files changed, 3060 insertions(+) create mode 100644 apps/mailu/helm-mailu.yaml create mode 100644 apps/mailu/mailu-es.yaml create mode 100644 apps/mailu/values.yaml create mode 100644 apps/templates/mailu-folder.yaml diff --git a/apps/mailu/helm-mailu.yaml b/apps/mailu/helm-mailu.yaml new file mode 100644 index 0000000..f161a11 --- /dev/null +++ b/apps/mailu/helm-mailu.yaml @@ -0,0 +1,25 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: helm-external-secrets + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + syncPolicy: + syncOptions: + - CreateNamespace=true + project: default + sources: + - chart: mailu + repoURL: https://mailu.github.io/helm-charts/ + targetRevision: 2.1.1 + helm: + valueFiles: + - $values/mailu/values.yaml + - repoURL: https://github.com/rubenhensen/k8scd.git + targetRevision: HEAD + ref: values + destination: + server: https://kubernetes.default.svc + namespace: external-secrets \ No newline at end of file diff --git a/apps/mailu/mailu-es.yaml b/apps/mailu/mailu-es.yaml new file mode 100644 index 0000000..4168e1e --- /dev/null +++ b/apps/mailu/mailu-es.yaml @@ -0,0 +1,17 @@ +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: mailu-es +spec: + refreshInterval: "15s" + secretStoreRef: + name: vault-backend + kind: ClusterSecretStore + target: + name: mailu_init_pass + data: + - secretKey: password + remoteRef: + key: mailu_init_pass + property: password + diff --git a/apps/mailu/values.yaml b/apps/mailu/values.yaml new file mode 100644 index 0000000..77f47be --- /dev/null +++ b/apps/mailu/values.yaml @@ -0,0 +1,2999 @@ +# ## Default values for mailu. + +# ## @section Global parameters +# ## Global common parameters (see Bitnamis common chart) +# ## @param global.imageRegistry Global container image registry +# ## @param global.imagePullSecrets Global container image pull secret +# ## @param global.storageClass Global storageClass to use for persistent volumes +# global: +# imageRegistry: "" +# imagePullSecrets: [] +# storageClass: "" + +# database: +# ## @param global.database.roundcube.database Name of the roundcube database +# ## @param global.database.roundcube.username Username to use for the roundcube database +# ## @param global.database.roundcube.password Password to use for the roundcube database +# ## @param global.database.roundcube.existingSecret Name of an existing secret to use for the roundcube database +# ## @param global.database.roundcube.existingSecretPasswordKey Name of the key in the existing secret to use for the roundcube database password +# roundcube: +# database: roundcube +# username: roundcube +# password: "" +# existingSecret: "" +# existingSecretPasswordKey: "" + +# ## @section Common parameters + +# ## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set) +# kubeVersion: "" +# ## @param nameOverride String to partially override mailu.fullname include (will maintain the release name) +# nameOverride: "" +# ## @param fullnameOverride String to fully override mailu.fullname template +# fullnameOverride: "" +# ## @param commonLabels Add labels to all the deployed resources +# commonLabels: {} +# ## @param commonAnnotations Add annotations to all the deployed resources +# commonAnnotations: {} + +# ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# ## @param tolerations Tolerations for pod assignment +# tolerations: [] + +# ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# ## @param affinity Affinity for pod assignment +# affinity: {} + +# ## @param imageRegistry Container registry to use for all Mailu images +# imageRegistry: ghcr.io + +# ## @section Mailu parameters + +# ## e.g.: +# ## hostnames: +# ## - mail.example.com +# ## - imap.example.com +# ## @param hostnames List of hostnames to generate certificates and ingresses for. The first will be used as primary mail hostname. +hostnames: + - mail.hensen.io + +# ## e.g.: +# ## domain: example.com +# ## @param domain Mail domain name. See https://github.com/Mailu/Mailu/blob/master/docs/faq.rst#what-is-the-difference-between-domain-and-hostnames +domain: "hensen.io" + +# ## e.g.: +# ## secretKey: chang3m3! +# ## @param secretKey The secret key is required for protecting authentication cookies and must be set individually for each deployment +# ## If empty, a random secret key will be generated and saved in a secret +# secretKey: "" + +# ## e.g.: +# ## existingSecret: mailu-secret +# ## @param existingSecret Name of the existing secret to retrieve the secretKey. +# ## The secret has to contain the secretKey value under the `secret-key` key. +# existingSecret: "" + +# ## @param timezone Timezone to use for the containers +# timezone: "Etc/UTC" + +# ## e.g.: +# ## initialAccount: +# ## username: mailadmin +# ## domain: mydomain.com +# ## password: "" +# ## existingSecret: mailu-secret +# ## +# ## @param initialAccount.enabled Enable the creation of the initial account +# ## @param initialAccount.username Username of the initial account +# ## @param initialAccount.domain Domain of the initial account +# ## @param initialAccount.password Password of the initial account; ignored if using existing secret; if empty, a random password will be generated and saved in a secret +# ## @param initialAccount.existingSecret Name of the existing secret to retrieve the initial account's password +# ## @param initialAccount.existingSecretPasswordKey Name of the key in the existing secret to use for the initial account's password +# ## @param initialAccount.mode How to treat the creationg of the initial account. Possible values: "create", "update" or "ifmissing" +initialAccount: + enabled: false + username: "ruben" + domain: "hensen.io" + # password: "" + existingSecret: "mailu_init_pass" + existingSecretPasswordKey: "password" + mode: "update" + +# ## @param api.enabled Enable the API interface +# ## @param api.token Token to use for the API interface - if empty, a random token will be generated and saved in a secret +# ## @param api.existingSecret Name of the existing secret to retrieve the API token - if set, the token will be ignored +# ## @param api.existingSecretTokenKey Name of the key in the existing secret to use for the API token +# ## @param api.webPath Path for the API interface +# api: +# enabled: false +# token: "" +# existingSecret: "" +# existingSecretTokenKey: "api-token" +# webPath: "/api" + +# ## @param subnet Change this if you're using different address ranges for pods (IPv4) +# subnet: 10.42.0.0/16 + +# ## @param subnet6 Change this if you're using different address ranges for pods (IPv6) +# subnet6: "" + +# networkPolicy: +# ## @param networkPolicy.enabled Enable network policy +# enabled: false + +# ## @param networkPolicy.ingressController.namespace Namespace where the ingress controller is deployed +# ## @param networkPolicy.ingressController.podSelector Selector for the ingress controller pods +# ingressController: +# namespace: ingress-nginx +# podSelector: | +# matchLabels: +# app.kubernetes.io/name: ingress-nginx +# app.kubernetes.io/instance: ingress-nginx +# app.kubernetes.io/component: controller + +# ## @param mailuVersion Override Mailu version to be deployed (tag of mailu images). Defaults to `Chart.AppVersion` - must be master or a version >= 2.0 +# mailuVersion: "" + +# ## @param logLevel default log level. can be overridden globally or per service +# logLevel: WARNING + +# ## @param postmaster local part of the postmaster email address (Mailu will use @$DOMAIN as domain part) +postmaster: postmaster + +# ## @param recipientDelimiter The delimiter used to separate local part from extension in recipient addresses +# recipientDelimiter: "+" + +# ## @param dmarc.rua Local part of the DMARC report email address (Mailu will use @$DOMAIN as domain part) +# ## @param dmarc.ruf Local part of the DMARC failure report email address (Mailu will use @$DOMAIN as domain part) +# dmarc: +# rua: "" +# ruf: "" + +# limits: +# ## @param limits.messageSizeLimitInMegabytes Maximum size of an email in megabytes +# messageSizeLimitInMegabytes: 50 + +# ## Configuration to prevent brute-force attacks. See the documentation for further information: https://mailu.io/master/configuration.html +# ## @param limits.authRatelimit.ip Sets the `AUTH_RATELIMIT_IP` environment variable in the `admin` pod +# ## @param limits.authRatelimit.ipv4Mask Sets the `AUTH_RATELIMIT_IP_V4_MASK` environment variable in the `admin` pod +# ## @param limits.authRatelimit.ipv6Mask Sets the `AUTH_RATELIMIT_IP_V6_MASK` environment variable in the `admin` pod +# ## @param limits.authRatelimit.user Sets the `AUTH_RATELIMIT_USER` environment variable in the `admin` pod +# ## @param limits.authRatelimit.exemptionLength Sets the `AUTH_RATELIMIT_EXEMPTION_LENGTH` environment variable in the `admin` pod +# ## @param limits.authRatelimit.exemption Sets the `AUTH_RATELIMIT_EXEMPTION` environment variable in the `admin` pod +# authRatelimit: +# ip: 60/hour +# ipv4Mask: 24 +# ipv6Mask: 56 +# user: 100/day +# exemptionLength: 86400 +# exemption: "" + +# # Configuration to reduce outgoing spam in case of a compromised account. See the documentation for further information: https://mailu.io/1.9/configuration.html?highlight=MESSAGE_RATELIMIT +# ## @param limits.messageRatelimit.value Sets the `MESSAGE_RATELIMIT` environment variable in the `admin` pod +# ## @param limits.messageRatelimit.exemption Sets the `MESSAGE_RATELIMIT_EXEMPTION` environment variable in the `admin` pod +# messageRatelimit: +# value: 200/day +# exemption: "" + +# ## Mailu external relay configuration +# ## Example: +# ## externalRelay: +# ## host: "[domain.tld]:port" +# ## username: username +# ## password: SECRET +# ## # username and password can also be stored as secret: +# ## existingSecret: external-relay-secret +# ## usernameKey: username +# ## passwordKey: password +# ## networks: ["10.0.0.0/24", "2001:db8::/32"] +# ## @param externalRelay.host Hostname of the external relay +# ## @param externalRelay.username Username for the external relay +# ## @param externalRelay.password Password for the external relay +# ## @param externalRelay.existingSecret Name of the secret containing the username and password for the external relay; if set, username and password will be ignored +# ## @param externalRelay.usernameKey Key in the secret containing the username for the external relay +# ## @param externalRelay.passwordKey Key in the secret containing the password for the external relay +# ## @param externalRelay.networks List of networks that are allowed to use Mailu as external relay +# externalRelay: +# host: "" +# username: "" +# password: "" +# existingSecret: "" +# usernameKey: "relay-username" +# passwordKey: "relay-password" +# networks: [] + +# ## @param clusterDomain Kubernetes cluster domain name +# clusterDomain: cluster.local + +# ## @param credentialRounds Number of rounds to use for password hashing +# credentialRounds: 12 + +# ## @param sessionCookieSecure Controls the secure flag on the cookies of the administrative interface. +# ## It should only be turned off if you intend to access it over plain HTTP. +# sessionCookieSecure: true + +# ## @param authRequireTokens Require tokens for authentication +# authRequireTokens: false + +# ## @param sessionTimeout Maximum amount of time in seconds between requests before a session is invalidated +# sessionTimeout: 3600 + +# ## @param permanentSessionLifetime Maximum amount of time in seconds a session can be kept alive for if it hasn’t timed-out +# permanentSessionLifetime: 2592000 + +# ## @param letsencryptShortchain Controls whether we send the ISRG Root X1 certificate in TLS handshakes. +# ## This is required for android handsets older than 7.1.1 but slows down the performance of modern devices. +# letsencryptShortchain: false + +# ## @param customization.siteName Website name +# ## @param customization.website URL of the website +# ## @param customization.logoUrl Sets a URL for a custom logo. This logo replaces the Mailu logo in the topleft of the main admin interface. +# ## @param customization.logoBackground Sets a custom background colour for the brand logo in the top left of the main admin interface. +# customization: +# siteName: "Mailu" +# website: "https://mailu.io" +# logoUrl: "" +# logoBackground: "" + +# ## @param welcomeMessage.enabled Enable welcome message +# ## @param welcomeMessage.subject Subject of the welcome message +# ## @param welcomeMessage.body Body of the welcome message +# welcomeMessage: +# enabled: true +# subject: "Welcome to Mailu" +# body: "Welcome to Mailu, your new email service. Please change your password and update your profile." + +# ## @param wildcardSenders List of user emails that can send emails from any address +# wildcardSenders: [] + +# ## @param tls.outboundLevel Sets the `OUTBOUND_TLS_LEVEL` environment variable +# ## @param tls.deferOnError Sets the `DEFER_ON_TLS_ERROR` environment variable +# ## @param tls.inboundEnforce Sets the `INBOUND_TLS_ENFORCE` environment variable +# tls: +# outboundLevel: "" +# deferOnError: "" +# inboundEnforce: "" + +# ## @section Storage parameters + +# ## If deploying mariadb or postgresql from this chart (see `mariadb.enabled` and `postgresql.enabled`), +# ## the username, password and database name for the `mailu` database needs to be configured in the respective sections. +# ## If using an external database, the `mailu` database needs to be created manually and the credentials need to be configured here. +# ## The `roundcube` database needs to be configured under the `global.database` section. +# ## If using the built-in MariaDB or PostgreSQL, the `roundcube` database will be created automatically. +# externalDatabase: +# ## @param externalDatabase.enabled Set to true to use an external database +# enabled: false + +# ## @param externalDatabase.type Type of the external database for mailu and roundcube (`mysql`/`postgresql`) +# ## Use `mysql` for MariaDB +# type: "" + +# ## @param externalDatabase.host Hostname of the database +# host: "" + +# ## @param externalDatabase.port Port of the database +# port: 3306 + +# ## @param externalDatabase.database Name of the database +# database: mailu + +# ## @param externalDatabase.username Username to use for the database +# username: mailu + +# ## @param externalDatabase.password Password to use for the database +# password: "" + +# ## @param externalDatabase.existingSecret Name of the secret containing the database credentials +# existingSecret: "" + +# ## @param externalDatabase.existingSecretDatabaseKey Key in the secret containing the database name +# existingSecretDatabaseKey: "database" + +# ## @param externalDatabase.existingSecretUsernameKey Key in the secret containing the database username +# existingSecretUsernameKey: "username" + +# ## @param externalDatabase.existingSecretPasswordKey Key in the secret containing the database password +# existingSecretPasswordKey: "password" + +# externalRedis: +# ## @param externalRedis.enabled Set to true to use an external Redis instance (ignored if `redis.enabled` is true) +# enabled: false + +# ## @param externalRedis.host Hostname of the external Redis instance +# host: "" + +# ## @param externalRedis.port Port of the external Redis instance +# port: 6379 + +# ## @param externalRedis.adminQuotaDbId Redis database ID for the quota storage on the admin pod +# adminQuotaDbId: 1 + +# ## @param externalRedis.adminRateLimitDbId Redis database ID for the rate limit storage on the admin pod +# adminRateLimitDbId: 2 + +# ## @param externalRedis.rspamdDbId Redis database ID for the rspamd storage on the rspamd pod +# ## Changing this value does nothing as the option is not configurable in rspamd pod yet +# ## ref: https://rspamd.com/doc/configuration/redis.html#available-redis-options +# rspamdDbId: 0 + +# ## @param database.mysql.roundcubePassword DEPRECATED - DO NOT USE: Password for the roundcube database +# ## @param database.postgresql.roundcubePassword DEPRECATED - DO NOT USE: Password for the roundcube database +# database: +# mysql: +# roundcubePassword: "" +# postgresql: +# roundcubePassword: "" + +# ## MariaDB chart configuration +# ## for more options see https://github.com/bitnami/charts/tree/master/bitnami/mariadb +# mariadb: +# ## @param mariadb.enabled Enable MariaDB deployment +# enabled: false + +# ## @param mariadb.architecture MariaDB architecture. Allowed values: standalone or replication +# architecture: standalone + +# ## @param mariadb.auth.rootPassword Password for the `root` user. Ignored if existing secret is provided. +# ## @param mariadb.auth.database Name for a custom database to create +# ## @param mariadb.auth.username Name for a custom user to create +# ## @param mariadb.auth.password Password for the new user. Ignored if existing secret is provided +# ## @param mariadb.auth.existingSecret Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` +# ## will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` +# ## and `mariadb-password` +# auth: +# rootPassword: "" +# database: mailu +# username: mailu +# password: "" +# existingSecret: "" + +# ## Enable persistence using Persistent Volume Claims +# ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ +# ## +# ## @param mariadb.primary.persistence.enabled Enable persistence using PVC +# ## @param mariadb.primary.persistence.storageClass PVC Storage Class for MariaDB volume +# ## If defined, storageClassName: +# ## If set to "-", storageClassName: "", which disables dynamic provisioning +# ## If undefined (the default) or set to null, no storageClassName spec is +# ## set, choosing the default provisioner. (gp2 on AWS, standard on +# ## GKE, AWS & OpenStack) +# ## @param mariadb.primary.persistence.accessMode PVC Access Mode for MariaDB volume +# ## @param mariadb.primary.persistence.size PVC Storage Request for MariaDB volume +# primary: +# persistence: +# enabled: false +# storageClass: "" +# accessMode: ReadWriteOnce +# size: 8Gi + +# ## @skip mariadb.primary.extraEnvVars +# ## Array with extra environment variables, used to create the initial `roundcube` database; DO NOT EDIT; see `global.database` instead +# extraEnvVars: | +# - name: ROUNDCUBE_DB_PW +# valueFrom: +# secretKeyRef: +# name: {{ include "mailu.database.roundcube.secretName" . }} +# key: {{ include "mailu.database.roundcube.secretKey" . }} +# - name: ROUNDCUBE_DB_NAME +# value: {{ include "mailu.database.roundcube.name" . }} +# - name: ROUNDCUBE_DB_USER +# value: {{ include "mailu.database.roundcube.username" . }} + +# ## @skip mariadb.initdbScripts.create_roundcube_database.sh +# ## DO NOT EDIT Script to create the roundcube database +# initdbScripts: +# create_roundcube_database.sh: | +# #!/bin/bash +# # set -o errexit +# # set -o nounset +# # set -o pipefail +# echo "Checking for DB initialisation" +# if [ -S /opt/bitnami/mariadb/tmp/mysql.sock ]; then +# echo "Running DB initialisation..." +# /opt/bitnami/mariadb/bin/mysql --user="root" --password="${MARIADB_ROOT_PASSWORD}" < +# ## If set to "-", storageClassName: "", which disables dynamic provisioning +# ## If undefined (the default) or set to null, no storageClassName spec is +# ## set, choosing the default provisioner. (gp2 on AWS, standard on +# ## GKE, AWS & OpenStack) +# ## @param postgresql.primary.persistence.accessMode PVC Access Mode for PostgreSQL volume +# ## @param postgresql.primary.persistence.size PVC Storage Request for PostgreSQL volume +# primary: +# ## @skip postgresql.primary.extraEnvVars +# ## Array with extra environment variables, used to create the initial `roundcube` database; DO NOT EDIT; see `global.database` instead +# extraEnvVars: | +# - name: ROUNDCUBE_DB_PW +# valueFrom: +# secretKeyRef: +# name: {{ include "mailu.database.roundcube.secretName" . }} +# key: {{ include "mailu.database.roundcube.secretKey" . }} +# - name: ROUNDCUBE_DB_NAME +# value: {{ include "mailu.database.roundcube.name" . }} +# - name: ROUNDCUBE_DB_USER +# value: {{ include "mailu.database.roundcube.username" . }} + +# initdb: +# ## @skip postgresql.primary.initdb.scripts.create_roundcube_database.sh +# ## DO NOT EDIT Script to create the roundcube database +# scripts: +# create_roundcube_database.sh: | +# #!/bin/bash +# # set -o errexit +# # set -o nounset +# # set -o pipefail +# info "Running DB initialisation..." +# info "Creating database ${ROUNDCUBE_DB_NAME}..." +# echo "CREATE DATABASE \"$ROUNDCUBE_DB_NAME\"" | postgresql_execute "" "postgres" "$POSTGRES_POSTGRES_PASSWORD" +# info "Creating user ${ROUNDCUBE_DB_USER}" +# echo "CREATE ROLE \"${ROUNDCUBE_DB_USER}\" WITH LOGIN CREATEDB PASSWORD '${ROUNDCUBE_DB_PW}';" | postgresql_execute "" "postgres" "$POSTGRES_POSTGRES_PASSWORD" +# info "Granting access to \"${ROUNDCUBE_DB_USER}\" to the database \"${ROUNDCUBE_DB_NAME}\"" +# echo "GRANT ALL PRIVILEGES ON DATABASE \"${ROUNDCUBE_DB_NAME}\" TO \"${ROUNDCUBE_DB_USER}\"\;" | postgresql_execute "" "postgres" "$POSTGRES_POSTGRES_PASSWORD" +# echo "ALTER DATABASE \"${ROUNDCUBE_DB_NAME}\" OWNER TO \"${ROUNDCUBE_DB_USER}\"\;" | postgresql_execute "" "postgres" "$POSTGRES_POSTGRES_PASSWORD" +# info "Setting ownership for the 'public' schema database \"${ROUNDCUBE_DB_NAME}\" to \"${ROUNDCUBE_DB_USER}\"" +# echo "ALTER SCHEMA public OWNER TO \"${ROUNDCUBE_DB_USER}\"\;" | postgresql_execute "$ROUNDCUBE_DB_NAME" "postgres" "$POSTGRES_POSTGRES_PASSWORD" + +# persistence: +# enabled: false +# storageClass: "" +# accessMode: ReadWriteOnce +# size: 8Gi + +# ## @param persistence.single_pvc Setings for a single volume for all apps. +# ## Set single_pvc: false to use a per app volume and set the properties in .persistence (ex. admin.persistence) +# ## @param persistence.size Size of the persistent volume claim (for single PVC) +# ## @param persistence.accessModes Access mode of backing PVC (for single PVC) +# ## @param persistence.annotations Annotations for the PVC (for single PVC) +# ## @param persistence.hostPath Path to mount the volume at on the host +# ## @param persistence.existingClaim Name of existing PVC (for single PVC) +# ## @param persistence.storageClass Storage class of backing PVC (for single PVC) +# ## @param persistence.claimNameOverride Override the name of the PVC (for single PVC) +persistence: + single_pvc: true + size: 100Gi + accessModes: [ReadWriteOnce] + # annotations: {} + # hostPath: "" + # existingClaim: "" + # storageClass: "" + # claimNameOverride: "" + +# ## @section Ingress settings + +# ## Set external ingress config +ingress: +# ## @param ingress.enabled Enable external ingress + enabled: true + +# ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) +# ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . +# ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + ingressClassName: "nginx" + +# ## @param ingress.pathType Ingress path type + pathType: ImplementationSpecific + +# ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set) +# apiVersion: "" + +# ## @param ingress.path Default path for the ingress record + path: / + +# ## @param ingress.annotations [object] Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. +# ## Use this parameter to set the required annotations for cert-manager, see +# ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations +# ## e.g: +# ## annotations: +# ## kubernetes.io/ingress.class: nginx +# ## cert-manager.io/cluster-issuer: cluster-issuer-name + annotations: + cert-manager.io/cluster-issuer: prod-cluster-issuer + +# ## @param ingress.tls Enable TLS configuration for the hosts defined at `hostnames` parameter +# ## TLS certificates will be retrieved from a TLS secret with name: `{{ printf "%s-certificates" (include "mailu.fullname" . ) }}` +# ## You can: +# ## - Use the `ingress.secrets` parameter to create this TLS secret +# ## - Rely on cert-manager to create it by setting the corresponding annotations +# ## - Rely on Helm to create self-signed certificates by setting `ingress.tls=true` and `ingress.certManager=false` + tls: true + +# ## @param ingress.existingSecret Name of an existing Secret containing the TLS certificates for the Ingress +# ## If empty, the expected secret name will be `{{ printf "%s-certificates" (include "mailu.fullname" . ) }}` +# existingSecret: "" + +# ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm +# selfSigned: false + +# ## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record +# ## e.g: +# ## extraHosts: +# ## - name: mailu.local +# ## path: / +# extraHosts: [] + +# ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host +# ## e.g: +# ## extraPaths: +# ## - path: /* +# ## backend: +# ## serviceName: ssl-redirect +# ## servicePort: use-annotation +# extraPaths: [] + +# ## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record +# ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls +# ## e.g: +# ## extraTls: +# ## - hosts: +# ## - mailu.local +# ## secretName: mailu.local-tls +# extraTls: [] + +# ## @param ingress.secrets Custom TLS certificates as secrets +# ## NOTE: 'key' and 'certificate' are expected in PEM format +# ## NOTE: 'name' should line up with a 'secretName' set further up +# ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates +# ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days (if `ingress.selfSigned=true`) +# ## It is also possible to create and manage the certificates outside of this helm chart +# ## Please see README.md for more information +# ## e.g: +# ## secrets: +# ## - name: mailu.local-tls +# ## key: |- +# ## -----BEGIN RSA PRIVATE KEY----- +# ## ... +# ## -----END RSA PRIVATE KEY----- +# ## certificate: |- +# ## -----BEGIN CERTIFICATE----- +# ## ... +# ## -----END CERTIFICATE----- +# secrets: [] + +# ## @param ingress.extraRules Additional rules to be covered with this ingress record +# ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules +# ## e.g: +# ## extraRules: +# ## - host: mailu.local +# ## http: +# ## path: / +# ## backend: +# ## service: +# ## name: example-svc +# ## port: +# ## name: http +# extraRules: [] + +# ## @param ingress.realIpHeader Sets the value of `REAL_IP_HEADER` environment variable in the `front` pod +# realIpHeader: X-Forwarded-For + +# ## @param ingress.realIpFrom Sets the value of `REAL_IP_FROM` environment variable in the `front` pod +# realIpFrom: "" + +# ## @param ingress.tlsFlavorOverride Overrides the value of `TLS_FLAVOR` environment variable in the `front` pod +# ## This is normally auto-detected, only change it if you know what you are doing. +# tlsFlavorOverride: "" + +# ## @param ingress.proxyProtocol.pop3 Enable PROXY protocol for POP3 (110/tcp) +# ## @param ingress.proxyProtocol.pop3s Enable PROXY protocol for POP3S (995/tcp) +# ## @param ingress.proxyProtocol.imap Enable PROXY protocol for IMAP (143/tcp) +# ## @param ingress.proxyProtocol.imaps Enable PROXY protocol for IMAPS (993/tcp) +# ## @param ingress.proxyProtocol.smtp Enable PROXY protocol for SMTP (25/tcp) +# ## @param ingress.proxyProtocol.smtps Enable PROXY protocol for SMTPS (465/tcp) +# ## @param ingress.proxyProtocol.submission Enable PROXY protocol for Submission (587/tcp) +# ## @param ingress.proxyProtocol.manageSieve Enable PROXY protocol for ManageSieve (4190/tcp) +# ## Enabling any of these requires to have ingress.realIpFrom set +# proxyProtocol: +# pop3: false +# pop3s: false +# imap: false +# imaps: false +# smtp: false +# smtps: false +# submission: false +# manageSieve: false + +# ## @section Proxy auth configuration +# ## ref: https://mailu.io/master/configuration.html#header-authentication-using-an-external-proxy +# proxyAuth: +# ## @param proxyAuth.whitelist Comma separated list of CIDRs of proxies to trust for authentication +# whitelist: "" + +# ## @param proxyAuth.header HTTP header containing the email address of the user to authenticate +# header: "X-Auth-Email" + +# ## @param proxyAuth.create Whether non-existing accounts should be auto-created +# create: "false" + +# ## @section Frontend load balancer for non-HTTP(s) services +front: +# ## @param front.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param front.image.repository Pod image repository +# ## @param front.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param front.image.pullPolicy Pod image pull policy + image: + repository: mailu/nginx +# tag: "" + pullPolicy: IfNotPresent + +# ## front.controller.kind Deployment only supported for now +# # controller: +# # kind: Deployment + +# ## @param front.hostPort.enabled Expose front mail ports via hostPort + hostPort: + enabled: true + +# ## Expose front mail ports via external service (ClusterIP or LoadBalancer) +# ## @param front.externalService.enabled Expose front mail ports via external service (ClusterIP or LoadBalancer) +# ## @param front.externalService.type Service type (ClusterIP or LoadBalancer) +# ## @param front.externalService.externalTrafficPolicy Service externalTrafficPolicy (Cluster or Local) +# ## @param front.externalService.loadBalancerIP Service loadBalancerIP +# ## @param front.externalService.annotations Service annotations +# ## @param front.externalService.ports.pop3 Expose POP3 port - 110/tcp +# ## @param front.externalService.ports.pop3s Expose POP3 port (TLS) - 995/tcp +# ## @param front.externalService.ports.imap Expose IMAP port - 143/tcp +# ## @param front.externalService.ports.imaps Expose IMAP port (TLS) - 993/tcp +# ## @param front.externalService.ports.smtp Expose SMTP port - 25/tcp +# ## @param front.externalService.ports.smtps Expose SMTP port (TLS) - 465/tcp +# ## @param front.externalService.ports.submission Expose Submission port - 587/tcp +# ## @param front.externalService.ports.manageSieve Expose ManageSieve port - 4190/tcp +# externalService: +# enabled: false +# type: ClusterIP +# ## Example for LoadBalancer: +# ## type: LoadBalancer +# loadBalancerIP: "" +# externalTrafficPolicy: Local +# annotations: {} +# ports: +# pop3: false +# pop3s: true +# imap: false +# imaps: true +# smtp: true +# smtps: true +# submission: false +# manageSieve: true + +# ## @param front.kind Kind of resource to create for the front (`Deployment` or `DaemonSet`) + kind: Deployment + +# ## @param front.replicaCount Number of front replicas to deploy (only for `Deployment` kind) + replicaCount: 1 + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param front.resources.limits The resources limits for the container +# ## @param front.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 200m +# ## memory: 200Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 25m +# ## memory: 100Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param front.livenessProbe.enabled Enable livenessProbe +# ## @param front.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param front.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param front.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param front.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param front.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param front.readinessProbe.enabled Enable readinessProbe +# ## @param front.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param front.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param front.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param front.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param front.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 1 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param front.startupProbe.enabled Enable startupProbe +# ## @param front.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param front.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param front.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param front.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param front.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 30 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## @param front.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param front.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param front.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param front.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param front.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param front.podSecurityContext.enabled Enabled pods' Security Context +# ## @param front.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param front.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param front.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param front.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param front.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param front.affinity Affinity for front pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param front.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param front.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param front.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param front.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param front.service.annotations Admin service annotations +# annotations: {} + +# ## @param front.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param front.updateStrategy.type Strategy to use to update Pods +# ## `Recreate` or `RollingUpdate` if `front.kind=Deployment` +# ## `OnDelete` or `RollingUpdate` if `front.kind=DaemonSet` +# updateStrategy: +# type: RollingUpdate + +# ## @param front.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param front.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param front.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param front.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param front.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param front.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section Admin parameters +admin: +# ## @param admin.enabled Enable access to the admin interface + enabled: true + +# ## @param admin.uri URI to access the admin interface + uri: /admin + +# ## @param admin.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param admin.image.repository Pod image repository +# ## @param admin.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param admin.image.pullPolicy Pod image pull policy + image: + repository: mailu/admin + # tag: "" + pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param admin.persistence.size Pod pvc size +# ## @param admin.persistence.storageClass Pod pvc storage class +# ## @param admin.persistence.accessModes Pod pvc access modes +# ## @param admin.persistence.claimNameOverride Pod pvc name override +# ## @param admin.persistence.annotations Pod pvc annotations +# persistence: +# size: 20Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param admin.resources.limits The resources limits for the container +# ## @param admin.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 500m +# ## memory: 500Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 25m +# ## memory: 25Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param admin.livenessProbe.enabled Enable livenessProbe +# ## @param admin.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param admin.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param admin.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param admin.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param admin.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param admin.readinessProbe.enabled Enable readinessProbe +# ## @param admin.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param admin.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param admin.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param admin.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param admin.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param admin.startupProbe.enabled Enable startupProbe +# ## @param admin.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param admin.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param admin.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param admin.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param admin.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## @param admin.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param admin.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param admin.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param admin.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param admin.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param admin.podSecurityContext.enabled Enabled pods' Security Context +# ## @param admin.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param admin.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param admin.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param admin.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param admin.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param admin.affinity Affinity for admin pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param admin.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param admin.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param admin.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param admin.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param admin.service.annotations Admin service annotations +# annotations: {} + +# ## @param admin.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param admin.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param admin.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param admin.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param admin.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param admin.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param admin.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param admin.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section Redis parameters +# ## Redis chart configuration +# ## for more options see https://github.com/bitnami/charts/tree/master/bitnami/redis +redis: +# ## @param redis.enabled Enable redis deployment through the redis subchart + enabled: true + +# ## @param redis.architecture Redis architecture. Allowed values: `standalone` or `replication` + architecture: standalone + +# ## @param redis.auth.enabled DON'T CHANGE THIS VALUE. Mailu doesn't support Redis authentication + auth: + enabled: false + + master: +# ## @param redis.master.enabled DON'T CHANGE THIS VALUE. Enable redis master + enabled: true + +# ## @param redis.master.count Number of redis master replicas + count: 1 + +# ## @param redis.master.persistence.enabled Enable persistence using Persistent Volume Claims +# ## @param redis.master.persistence.size Pod pvc size +# ## @param redis.master.persistence.storageClass Pod pvc storage class +# ## @param redis.master.persistence.accessModes Pod pvc access modes +# ## @param redis.master.persistence.annotations Pod pvc annotations +# ## @param redis.master.persistence.existingClaim Pod pvc existing claim; necessary if using single_pvc +# ## @param redis.master.persistence.subPath Subpath in PVC; necessary if using single_pvc (set it to `/redis`) +# persistence: +# enabled: true +# size: 8Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# existingClaim: "" +# subPath: "" +# annotations: {} + +# ## @param redis.replica.count Number of redis replicas (only if `redis.architecture=replication`) +# ## Don't forget to configure replicas persistence if changing this value +# replica: +# count: 0 + +# ## @section Postfix parameters +postfix: +# ## @param postfix.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param postfix.image.repository Pod image repository +# ## @param postfix.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param postfix.image.pullPolicy Pod image pull policy + image: + repository: mailu/postfix +# tag: "" + pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param postfix.persistence.size Pod pvc size +# ## @param postfix.persistence.storageClass Pod pvc storage class +# ## @param postfix.persistence.accessModes Pod pvc access modes +# ## @param postfix.persistence.claimNameOverride Pod pvc name override +# ## @param postfix.persistence.annotations Pod pvc annotations +# persistence: +# size: 20Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param postfix.resources.limits The resources limits for the container +# ## @param postfix.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 500m +# ## memory: 2Gi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 500m +# ## memory: 2Gi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param postfix.livenessProbe.enabled Enable livenessProbe +# ## @param postfix.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param postfix.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param postfix.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param postfix.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param postfix.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param postfix.readinessProbe.enabled Enable readinessProbe +# ## @param postfix.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param postfix.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param postfix.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param postfix.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param postfix.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param postfix.startupProbe.enabled Enable startupProbe +# ## @param postfix.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param postfix.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param postfix.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param postfix.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param postfix.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: true + failureThreshold: 30 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## @param postfix.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param postfix.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param postfix.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param postfix.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param postfix.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param postfix.podSecurityContext.enabled Enabled pods' Security Context +# ## @param postfix.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param postfix.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param postfix.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param postfix.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param postfix.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param postfix.affinity Affinity for postfix pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param postfix.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param postfix.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param postfix.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param postfix.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param postfix.service.annotations Admin service annotations +# annotations: {} + +# ## @param postfix.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param postfix.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param postfix.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param postfix.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param postfix.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param postfix.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param postfix.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param postfix.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @param postfix.overrides Enable postfix overrides +# ## More info here: https://mailu.io/master/faq.html#how-can-i-override-settings +# ## Example: +# ## overrides: +# ## postfix.cf: | +# ## my_variable = my_value +# overrides: {} + +# ## @section Dovecot parameters +dovecot: +# ## @param dovecot.enabled Enable dovecot + enabled: true + +# ## @param dovecot.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param dovecot.image.repository Pod image repository +# ## @param dovecot.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param dovecot.image.pullPolicy Pod image pull policy + image: + repository: mailu/dovecot +# tag: "" + pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param dovecot.persistence.size Pod pvc size +# ## @param dovecot.persistence.storageClass Pod pvc storage class +# ## @param dovecot.persistence.accessModes Pod pvc access modes +# ## @param dovecot.persistence.claimNameOverride Pod pvc name override +# ## @param dovecot.persistence.annotations Pod pvc annotations +# persistence: +# size: 20Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param dovecot.resources.limits The resources limits for the container +# ## @param dovecot.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 500m +# ## memory: 500Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 25m +# ## memory: 25Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param dovecot.livenessProbe.enabled Enable livenessProbe +# ## @param dovecot.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param dovecot.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param dovecot.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param dovecot.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param dovecot.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param dovecot.readinessProbe.enabled Enable readinessProbe +# ## @param dovecot.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param dovecot.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param dovecot.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param dovecot.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param dovecot.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param dovecot.startupProbe.enabled Enable startupProbe +# ## @param dovecot.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param dovecot.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param dovecot.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param dovecot.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param dovecot.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + +# ## @param dovecot.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param dovecot.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param dovecot.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param dovecot.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param dovecot.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param dovecot.podSecurityContext.enabled Enabled pods' Security Context +# ## @param dovecot.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param dovecot.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param dovecot.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param dovecot.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param dovecot.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param dovecot.affinity Affinity for dovecot pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param dovecot.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param dovecot.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param dovecot.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param dovecot.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param dovecot.service.annotations Admin service annotations +# annotations: {} + +# ## @param dovecot.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param dovecot.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param dovecot.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param dovecot.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param dovecot.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param dovecot.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param dovecot.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param dovecot.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @param dovecot.overrides Enable dovecot overrides +# ## Example: +# ## overrides: +# ## dovecot.conf: | +# ## # More info here: https://mailu.io/1.8/kubernetes/mailu/index.html#dovecot +# ## mail_nfs_index = yes +# ## mail_nfs_storage = yes +# ## mail_fsync = always +# ## mmap_disable = yes +# ## mail_max_userip_connections=100 +# overrides: {} + +# ## @param dovecot.compression Maildir compression algorithm (gz, bz2, lz4, zstd) +# compression: "" + +# ## @param dovecot.compressionLevel Maildir compression level (1-9) +# compressionLevel: 6 + +# ## @section rspamd parameters +rspamd: +# ## @param rspamd.enabled Enable rspamd + enabled: true +# ## @param rspamd.overrides Enable rspamd overrides +# ## More info here: https://mailu.io/master/faq.html#how-can-i-override-settings +# ## Example: +# ## overrides: +# ## fileA.conf: | +# ## obj { +# ## key = value; +# ## } +# overrides: {} + +# ## @param rspamd.antivirusAction Action to take when an virus is detected. Possible values: `reject` or `discard` + antivirusAction: "discard" + +# ## @param rspamd.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param rspamd.image.repository Pod image repository +# ## @param rspamd.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param rspamd.image.pullPolicy Pod image pull policy + image: + repository: mailu/rspamd +# tag: "" + pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param rspamd.persistence.size Pod pvc size +# ## @param rspamd.persistence.storageClass Pod pvc storage class +# ## @param rspamd.persistence.accessModes Pod pvc access modes +# ## @param rspamd.persistence.claimNameOverride Pod pvc name override +# ## @param rspamd.persistence.annotations Pod pvc annotations +# persistence: +# size: 1Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param rspamd.resources.limits The resources limits for the container +# ## @param rspamd.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 200m +# ## memory: 200Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 100m +# ## memory: 100Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param rspamd.livenessProbe.enabled Enable livenessProbe +# ## @param rspamd.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param rspamd.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param rspamd.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param rspamd.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param rspamd.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param rspamd.readinessProbe.enabled Enable readinessProbe +# ## @param rspamd.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param rspamd.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param rspamd.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param rspamd.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param rspamd.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## give it 15 minutes for initial rule compilation +# ## @param rspamd.startupProbe.enabled Enable startupProbe +# ## @param rspamd.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param rspamd.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param rspamd.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param rspamd.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param rspamd.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: true + failureThreshold: 90 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## @param rspamd.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param rspamd.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param rspamd.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param rspamd.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param rspamd.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param rspamd.podSecurityContext.enabled Enabled pods' Security Context +# ## @param rspamd.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param rspamd.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param rspamd.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param rspamd.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param rspamd.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param rspamd.affinity Affinity for rspamd pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param rspamd.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param rspamd.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param rspamd.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param rspamd.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param rspamd.service.annotations Admin service annotations +# annotations: {} + +# ## @param rspamd.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param rspamd.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param rspamd.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param rspamd.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param rspamd.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param rspamd.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param rspamd.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param rspamd.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section clamav parameters +clamav: +# ## @param clamav.enabled Enable ClamAV + enabled: true + +# ## @param clamav.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param clamav.image.repository Pod image repository +# ## @param clamav.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param clamav.image.pullPolicy Pod image pull policy +# ## @param clamav.image.registry Pod image registry (specific for clamav as it is not part of the mailu organization) + image: + repository: clamav/clamav-debian + tag: 1.2.0-6 + pullPolicy: IfNotPresent + registry: docker.io + +# ## Pod persistence (if not using single_pvc) +# persistence: +# ## @param clamav.persistence.enabled Enable persistence using PVC +# enabled: true + +# ## @param clamav.persistence.size Pod pvc size +# size: 2Gi + +# ## @param clamav.persistence.storageClass Pod pvc storage class +# storageClass: "" + +# ## @param clamav.persistence.accessModes Pod pvc access modes +# accessModes: [ReadWriteOnce] + +# ## @param clamav.persistence.annotations Pod pvc annotations +# annotations: {} + +# ## @param clamav.persistence.labels Pod pvc labels +# labels: {} + +# ## @param clamav.persistence.selector Additional labels to match for the PVC +# ## e.g: +# ## selector: +# ## matchLabels: +# ## app: my-app +# selector: {} + +# ## @param clamav.persistence.dataSource Custom PVC data source +# dataSource: {} + +# ## @param clamav.persistence.existingClaim Use a existing PVC which must be created manually before bound +# ## NOTE: requires clamav.persistence.enabled: true +# existingClaim: "" + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param clamav.resources.limits The resources limits for the container +# ## @param clamav.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 1 +# ## memory: 2Gi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 1 +# ## memory: 1Gi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param clamav.livenessProbe.enabled Enable livenessProbe +# ## @param clamav.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param clamav.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param clamav.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param clamav.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param clamav.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param clamav.readinessProbe.enabled Enable readinessProbe +# ## @param clamav.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param clamav.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param clamav.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param clamav.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param clamav.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## give it 15 minutes for initial rule compilation +# ## @param clamav.startupProbe.enabled Enable startupProbe +# ## @param clamav.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param clamav.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param clamav.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param clamav.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param clamav.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 60 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## @param clamav.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param clamav.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param clamav.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param clamav.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param clamav.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param clamav.podSecurityContext.enabled Enabled pods' Security Context +# ## @param clamav.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param clamav.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param clamav.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param clamav.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param clamav.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param clamav.affinity Affinity for clamav pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# ## clamav must share a volume with rspamd. This is usually enforced by the volume itself (RWO). If you use RWM volumes and want to +# ## have clamav running on the same node, add the following affinity rule: +# ## affinity: +# ## podAffinity: +# ## requiredDuringSchedulingIgnoredDuringExecution: +# ## - labelSelector: +# ## matchExpressions: +# ## - key: app.kubernetes.io/component +# ## operator: In +# ## values: +# ## - rspamd +# ## topologyKey: kubernetes.io/hostname +# affinity: {} + +# ## @param clamav.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param clamav.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param clamav.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param clamav.service.annotations Admin service annotations +# annotations: {} + +# ## @param clamav.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param clamav.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param clamav.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param clamav.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param clamav.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param clamav.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param clamav.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param clamav.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section webmail parameters +webmail: +# ## @param webmail.enabled Enable deployment of Roundcube webmail + enabled: true + +# ## @param webmail.uri URI to access Roundcube webmail + uri: /webmail + +# ## @param webmail.type Type of webmail to deploy (`roundcube` or `snappymail`) + type: roundcube + +# ## @param webmail.roundcubePlugins List of Roundcube plugins to enable + roundcubePlugins: + - archive + - zipdownload + - markasjunk + - managesieve + - enigma + - carddav + - mailu + +# ## @param webmail.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param webmail.image.repository Pod image repository +# ## @param webmail.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param webmail.image.pullPolicy Pod image pull policy + image: + repository: mailu/webmail + # tag: "" + pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param webmail.persistence.size Pod pvc size +# ## @param webmail.persistence.storageClass Pod pvc storage class +# ## @param webmail.persistence.accessModes Pod pvc access modes +# ## @param webmail.persistence.claimNameOverride Pod pvc name override +# ## @param webmail.persistence.annotations Pod pvc annotations +# persistence: +# size: 20Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param webmail.resources.limits The resources limits for the container +# ## @param webmail.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 200m +# ## memory: 200Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 100m +# ## memory: 100Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param webmail.livenessProbe.enabled Enable livenessProbe +# ## @param webmail.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param webmail.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param webmail.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param webmail.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param webmail.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param webmail.readinessProbe.enabled Enable readinessProbe +# ## @param webmail.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param webmail.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param webmail.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param webmail.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param webmail.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param webmail.startupProbe.enabled Enable startupProbe +# ## @param webmail.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param webmail.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param webmail.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param webmail.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param webmail.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + +# ## @param webmail.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param webmail.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param webmail.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param webmail.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param webmail.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param webmail.podSecurityContext.enabled Enabled pods' Security Context +# ## @param webmail.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param webmail.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param webmail.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param webmail.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param webmail.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param webmail.affinity Affinity for webmail pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param webmail.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param webmail.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param webmail.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param webmail.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param webmail.service.annotations Admin service annotations +# annotations: {} + +# ## @param webmail.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param webmail.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param webmail.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param webmail.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param webmail.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param webmail.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param webmail.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param webmail.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section webdav parameters +# webdav: +# ## @param webdav.enabled Enable deployment of WebDAV server (using Radicale) +# enabled: false + +# ## @param webdav.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param webdav.image.repository Pod image repository +# ## @param webdav.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param webdav.image.pullPolicy Pod image pull policy +# image: +# repository: mailu/radicale +# tag: "" +# pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param webdav.persistence.size Pod pvc size +# ## @param webdav.persistence.storageClass Pod pvc storage class +# ## @param webdav.persistence.accessModes Pod pvc access modes +# ## @param webdav.persistence.claimNameOverride Pod pvc name override +# ## @param webdav.persistence.annotations Pod pvc annotations +# persistence: +# size: 20Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param webdav.resources.limits The resources limits for the container +# ## @param webdav.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 500m +# ## memory: 500Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 25m +# ## memory: 25Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param webdav.livenessProbe.enabled Enable livenessProbe +# ## @param webdav.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param webdav.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param webdav.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param webdav.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param webdav.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe +# livenessProbe: +# enabled: true +# failureThreshold: 3 +# initialDelaySeconds: 10 +# periodSeconds: 10 +# successThreshold: 1 +# timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param webdav.readinessProbe.enabled Enable readinessProbe +# ## @param webdav.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param webdav.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param webdav.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param webdav.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param webdav.readinessProbe.successThreshold Success threshold for readinessProbe +# readinessProbe: +# enabled: true +# failureThreshold: 3 +# initialDelaySeconds: 10 +# periodSeconds: 10 +# successThreshold: 1 +# timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param webdav.startupProbe.enabled Enable startupProbe +# ## @param webdav.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param webdav.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param webdav.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param webdav.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param webdav.startupProbe.successThreshold Success threshold for startupProbe +# startupProbe: +# enabled: false +# failureThreshold: 3 +# initialDelaySeconds: 10 +# periodSeconds: 10 +# successThreshold: 1 +# timeoutSeconds: 1 + +# ## @param webdav.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param webdav.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param webdav.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param webdav.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param webdav.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param webdav.podSecurityContext.enabled Enabled pods' Security Context +# ## @param webdav.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param webdav.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param webdav.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param webdav.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param webdav.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param webdav.affinity Affinity for webdav pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param webdav.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param webdav.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param webdav.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param webdav.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param webdav.service.annotations Admin service annotations +# annotations: {} + +# ## @param webdav.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param webdav.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param webdav.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param webdav.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param webdav.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param webdav.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param webdav.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param webdav.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section fetchmail parameters +# fetchmail: +# ## @param fetchmail.enabled Enable deployment of fetchmail +# enabled: false + +# ## @param fetchmail.delay Delay between fetchmail runs +# delay: 600 + +# ## @param fetchmail.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param fetchmail.image.repository Pod image repository +# ## @param fetchmail.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param fetchmail.image.pullPolicy Pod image pull policy +# image: +# repository: mailu/fetchmail +# tag: "" +# pullPolicy: IfNotPresent + +# ## Pod persistence (if not using single_pvc) +# ## @param fetchmail.persistence.size Pod pvc size +# ## @param fetchmail.persistence.storageClass Pod pvc storage class +# ## @param fetchmail.persistence.accessModes Pod pvc access modes +# ## @param fetchmail.persistence.claimNameOverride Pod pvc name override +# ## @param fetchmail.persistence.annotations Pod pvc annotations +# persistence: +# size: 20Gi +# storageClass: "" +# accessModes: [ReadWriteOnce] +# claimNameOverride: "" +# annotations: {} + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param fetchmail.resources.limits The resources limits for the container +# ## @param fetchmail.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 200m +# ## memory: 200Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 100m +# ## memory: 100Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param fetchmail.livenessProbe.enabled Enable livenessProbe +# ## @param fetchmail.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param fetchmail.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param fetchmail.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param fetchmail.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param fetchmail.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe +# livenessProbe: +# enabled: true +# failureThreshold: 3 +# initialDelaySeconds: 10 +# periodSeconds: 10 +# successThreshold: 1 +# timeoutSeconds: 1 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param fetchmail.readinessProbe.enabled Enable readinessProbe +# ## @param fetchmail.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param fetchmail.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param fetchmail.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param fetchmail.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param fetchmail.readinessProbe.successThreshold Success threshold for readinessProbe +# readinessProbe: +# enabled: true +# failureThreshold: 3 +# initialDelaySeconds: 10 +# periodSeconds: 10 +# successThreshold: 1 +# timeoutSeconds: 1 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param fetchmail.startupProbe.enabled Enable startupProbe +# ## @param fetchmail.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param fetchmail.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param fetchmail.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param fetchmail.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param fetchmail.startupProbe.successThreshold Success threshold for startupProbe +# startupProbe: +# enabled: false +# failureThreshold: 3 +# initialDelaySeconds: 10 +# periodSeconds: 10 +# successThreshold: 1 +# timeoutSeconds: 1 + +# ## @param fetchmail.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param fetchmail.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param fetchmail.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param fetchmail.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param fetchmail.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param fetchmail.podSecurityContext.enabled Enabled pods' Security Context +# ## @param fetchmail.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param fetchmail.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param fetchmail.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param fetchmail.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param fetchmail.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param fetchmail.affinity Affinity for fetchmail pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param fetchmail.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param fetchmail.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param fetchmail.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param fetchmail.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param fetchmail.service.annotations Admin service annotations +# annotations: {} + +# ## @param fetchmail.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param fetchmail.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param fetchmail.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param fetchmail.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param fetchmail.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param fetchmail.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param fetchmail.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param fetchmail.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section OLETools parameters +oletools: +# ## @param oletools.enabled Enable OLETools + enabled: true + +# ## @param oletools.logLevel Override default log level +# logLevel: "" + +# ## Pod image +# ## @param oletools.image.repository Pod image repository +# ## @param oletools.image.tag Pod image tag (defaults to mailuVersion if set, otherwise Chart.AppVersion) +# ## @param oletools.image.pullPolicy Pod image pull policy + image: + repository: mailu/oletools +# tag: "" + pullPolicy: IfNotPresent + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param oletools.resources.limits The resources limits for the container +# ## @param oletools.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 500m +# ## memory: 500Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 25m +# ## memory: 25Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param oletools.livenessProbe.enabled Enable livenessProbe +# ## @param oletools.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param oletools.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param oletools.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param oletools.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param oletools.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param oletools.readinessProbe.enabled Enable readinessProbe +# ## @param oletools.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param oletools.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param oletools.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param oletools.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param oletools.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param oletools.startupProbe.enabled Enable startupProbe +# ## @param oletools.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param oletools.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param oletools.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param oletools.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param oletools.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## @param oletools.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param oletools.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param oletools.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param oletools.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param oletools.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param oletools.podSecurityContext.enabled Enabled pods' Security Context +# ## @param oletools.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param oletools.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param oletools.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param oletools.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param oletools.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param oletools.affinity Affinity for oletools pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param oletools.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param oletools.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param oletools.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param oletools.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param oletools.service.annotations oletools service annotations +# annotations: {} + +# ## @param oletools.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param oletools.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param oletools.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param oletools.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param oletools.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param oletools.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param oletools.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param oletools.extraContainers Add additional containers to the pod +# extraContainers: [] + +# ## @section Tika parameters +tika: +# ## @param tika.enabled Enable OLETools + enabled: true + +# ## @param tika.logLevel Override default log level +# logLevel: "" + +# ## @param tika.languages Array of languages to enable (sets the FULL_TEXT_SEARCH environment variable); "off" to disable +# ## See https://doc.dovecot.org/settings/plugin/fts-plugin/#fts-languages for all available languages + languages: + - en + +# ## Pod image +# ## @param tika.image.repository Pod image repository +# ## @param tika.image.tag Pod image tag +# ## @param tika.image.pullPolicy Pod image pull policy +# ## @param tika.image.registry Pod image registry (specific for tika as it is not part of the mailu organization) + image: + repository: apache/tika + tag: 2.9.2.1-full + pullPolicy: IfNotPresent + registry: docker.io + +# ## Pod resource requests and limits +# ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ +# ## We usually recommend not to specify default resources and to leave this as a conscious +# ## choice for the user. This also increases chances charts run on environments with little +# ## resources, such as Minikube. If you do want to specify resources, uncomment the following +# ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# ## @param tika.resources.limits The resources limits for the container +# ## @param tika.resources.requests The requested resources for the container +# ## +# resources: +# ## Example: +# ## limits: +# ## cpu: 500m +# ## memory: 500Mi +# limits: {} +# ## Examples: +# ## requests: +# ## cpu: 25m +# ## memory: 25Mi +# requests: {} + +# ## Liveness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param tika.livenessProbe.enabled Enable livenessProbe +# ## @param tika.livenessProbe.failureThreshold Failure threshold for livenessProbe +# ## @param tika.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +# ## @param tika.livenessProbe.periodSeconds Period seconds for livenessProbe +# ## @param tika.livenessProbe.successThreshold Success threshold for livenessProbe +# ## @param tika.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## Readiness probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param tika.readinessProbe.enabled Enable readinessProbe +# ## @param tika.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +# ## @param tika.readinessProbe.periodSeconds Period seconds for readinessProbe +# ## @param tika.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +# ## @param tika.readinessProbe.failureThreshold Failure threshold for readinessProbe +# ## @param tika.readinessProbe.successThreshold Success threshold for readinessProbe + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## Startup probe values +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +# ## @param tika.startupProbe.enabled Enable startupProbe +# ## @param tika.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +# ## @param tika.startupProbe.periodSeconds Period seconds for startupProbe +# ## @param tika.startupProbe.timeoutSeconds Timeout seconds for startupProbe +# ## @param tika.startupProbe.failureThreshold Failure threshold for startupProbe +# ## @param tika.startupProbe.successThreshold Success threshold for startupProbe + startupProbe: + enabled: false + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + +# ## @param tika.podLabels Add extra labels to pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +# podLabels: {} + +# ## @param tika.podAnnotations Add extra annotations to the pod +# ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +# podAnnotations: {} + +# ## ref: https://kubernetes.io/docs/user-guide/node-selection/ +# ## @param tika.nodeSelector Node labels selector for pod assignment +# nodeSelector: {} + +# ## @param tika.initContainers Add additional init containers to the pod +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# ## e.g: +# ## initContainers: +# ## - name: your-image-name +# ## image: your-image +# ## imagePullPolicy: Always +# ## command: ['sh', '-c', 'echo "hello world"'] +# initContainers: [] + +# ## @param tika.priorityClassName Pods' priorityClassName +# priorityClassName: "" + +# ## @param tika.podSecurityContext.enabled Enabled pods' Security Context +# ## @param tika.podSecurityContext.fsGroup Set pods' Security Context fsGroup +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# podSecurityContext: +# enabled: false +# fsGroup: 1001 + +# ## @param tika.containerSecurityContext.enabled Enabled containers' Security Context +# ## @param tika.containerSecurityContext.runAsUser Set containers' Security Context runAsUser +# ## @param tika.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +# ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +# containerSecurityContext: +# enabled: false +# runAsUser: 1001 +# runAsNonRoot: false + +# ## @param tika.terminationGracePeriodSeconds In seconds, time given to the pod to terminate gracefully +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +# terminationGracePeriodSeconds: 2 + +# ## @param tika.affinity Affinity for tika pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +# affinity: {} + +# ## @param tika.tolerations Tolerations for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +# tolerations: [] + +# ## @param tika.revisionHistoryLimit Configure the revisionHistoryLimit of the deployment +# ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit +# revisionHistoryLimit: 3 + +# ## @param tika.hostAliases Pod pod host aliases +# ## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# hostAliases: [] + +# ## @param tika.schedulerName Name of the k8s scheduler (other than default) +# ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +# schedulerName: "" + +# # Service parameters +# service: +# ## @param tika.service.annotations tika service annotations +# annotations: {} + +# ## @param tika.topologySpreadConstraints Topology Spread Constraints for pod assignment +# ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# topologySpreadConstraints: [] + +# ## Strategy to use to update Pods +# ## @param tika.updateStrategy.type Can be set to RollingUpdate or OnDelete +# updateStrategy: +# type: RollingUpdate + +# ## @param tika.extraEnvVars Extra environment variable to pass to the running container +# ## For example: +# ## extraEnvVars: +# ## - name: MY_ENV_VAR +# ## value: env_var_value +# extraEnvVars: [] + +# ## @param tika.extraEnvVarsCM Name of existing ConfigMap containing extra environment variables to mount in the pod +# extraEnvVarsCM: "" + +# ## @param tika.extraEnvVarsSecret Name of existing Secret containing extra environment variables to mount in the pod +# extraEnvVarsSecret: "" + +# ## @param tika.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the pod +# extraVolumeMounts: [] + +# ## @param tika.extraVolumes Optionally specify extra list of additional volumes for the pod(s) +# extraVolumes: [] + +# ## @param tika.extraContainers Add additional containers to the pod +# extraContainers: [] diff --git a/apps/templates/mailu-folder.yaml b/apps/templates/mailu-folder.yaml new file mode 100644 index 0000000..b5c31e8 --- /dev/null +++ b/apps/templates/mailu-folder.yaml @@ -0,0 +1,19 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: mailu-folder +spec: + project: default + source: + repoURL: https://github.com/rubenhensen/k8scd.git + targetRevision: HEAD + path: mailu + destination: + server: https://kubernetes.default.svc + namespace: mailu + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + selfHeal: true + prune: true \ No newline at end of file