0

I'm facing a critical issue while setting up a mail server in my Kubernetes cluster using the Mailu Helm Chart. Despite meticulously following the provided instructions, my pods are failing to start. I've been stuck on this for the past 3 days, and no matter what I try, I'm unable to make any progress.

After careful troubleshooting, I suspect there might be a bug related to the single_pvc configuration, specifically with its handling of permissions over the NFS. I've provided details of the issue below.

# kubectl get po -wnmailu-mailserver
NAME                             READY   STATUS                       RESTARTS   AGE
mailu-admin-c68d5f79c-vbqhl      0/1     CreateContainerConfigError   0          34s
mailu-dovecot-6f4455bf97-tfmcb   0/1     CreateContainerConfigError   0          34s
mailu-front-64c55b6546-gc2bs     1/1     Running                      0          34s
mailu-oletools-c6849d9ff-kb25k   1/1     Running                      0          34s
mailu-postfix-59644d6d7b-sl4v2   0/1     CreateContainerConfigError   0          34s
mailu-rspamd-7b97b5db84-sbpj2    0/1     CreateContainerConfigError   0          34s
mailu-webmail-74d87f97f5-7jvvn   0/1     CreateContainerConfigError   0          34s
# kubectl describe po -n mailu-mailserver mailu-admin-c68d5f79c-vbqhl
Name:             mailu-admin-c68d5f79c-vbqhl
Namespace:        mailu-mailserver
Priority:         0
Service Account:  default
Node:             main-worker.example/1.1.1.1
Start Time:       Mon, 11 Dec 2023 23:14:28 +0000
Labels:           app.kubernetes.io/component=admin
                  app.kubernetes.io/instance=mailu
                  app.kubernetes.io/managed-by=Helm
                  app.kubernetes.io/name=mailu
                  helm.sh/chart=mailu-1.5.0
                  pod-template-hash=c68d5f79c
Annotations:      cni.projectcalico.org/containerID: 21fc9fb90b0ba55c85b58fbfd75111439def3c9b36df556b1234176e368621ae
                  cni.projectcalico.org/podIP: 192.168.196.138/32
                  cni.projectcalico.org/podIPs: 192.168.196.138/32
Status:           Pending
IP:               192.168.196.138
IPs:
  IP:           192.168.196.138
Controlled By:  ReplicaSet/mailu-admin-c68d5f79c
Containers:
  admin:
    Container ID:   
    Image:          ghcr.io/mailu/admin:2.0.30
    Image ID:       
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CreateContainerConfigError
    Ready:          False
    Restart Count:  0
    Liveness:       http-get http://:http/ping delay=10s timeout=1s period=10s #success=1 #failure=3
    Readiness:      http-get http://:http/ping delay=10s timeout=1s period=10s #success=1 #failure=3
    Environment Variables from:
      mailu-envvars  ConfigMap  Optional: false
    Environment:
      LOG_LEVEL:          DEBUG
      QUOTA_STORAGE_URL:  redis://mailu-redis-master.mailu-mailserver.svc.cluster.local:6379/1
      SECRET_KEY:         <set to the key 'secret-key' in secret 'mailu'>                Optional: false
      INITIAL_ADMIN_PW:   <set to the key 'initial-account-password' in secret 'mailu'>  Optional: false
      ROUNDCUBE_DB_PW:    <set to the key 'roundcube-db-password' in secret 'mailu'>     Optional: false
    Mounts:
      /data from data (rw,path="admin")
      /dkim from data (rw,path="dkim")
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-pgcjz (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  data:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  mailu
    ReadOnly:   false
  kube-api-access-pgcjz:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age                From               Message
  ----     ------            ----               ----               -------
  Warning  FailedScheduling  63s                default-scheduler  0/1 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling..
  Normal   Scheduled         62s                default-scheduler  Successfully assigned mailu-mailserver/mailu-admin-c68d5f79c-vbqhl to main-worker.example
  Normal   Pulled            11s (x7 over 61s)  kubelet            Container image "ghcr.io/mailu/admin:2.0.30" already present on machine
  Warning  Failed            11s (x7 over 61s)  kubelet            Error: failed to prepare subPath for volumeMount "data" of container "admin"

Environment

  • Host OS: Ubuntu 20.04
  • Kubernetes Platform: Kubeadm-Kubelete-Kubectl stack (version: 1.28.4) on a bare-metal server

Additional context

Volume:

# cat volume.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mailu
  namespace: mailu-mailserver
  labels:
    volume: mailu
spec:
  capacity:
    storage: 100Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: my-nfs
  nfs:
      path: /nfs/mailu
      server: nfs.my.com
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mailu
  namespace: mailu-mailserver
  labels:
    volumes: mailu
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  storageClassName: my-nfs
  volumeName: mailu

Volume's folder exists and has the following permissions:

# ll /nfs/mailu
total 8
drw-r--r--  2 1001 1001 4096 Dec 11 22:32 ./
drwxr-xr-x 50 1001 nogroup  4096 Dec 11 22:32 ../

Values

global:
  database:
    roundcube:
      database: mysql-primary-0.example-databases
      username: roundcube
      password: ""
      existingSecret: "mailu"
      existingSecretPasswordKey: "roundcube-db-password"

hostnames:
  - mail.example.com

domain: example.com

existingSecret: mailu

timezone: "Asia/Tehran"

initialAccount:
  enabled: true
  username: info
  domain: example.com
  existingSecret: mailu
  existingSecretPasswordKey: initial-account-password
  mode: "update"

networkPolicy:
  enabled: true

  ingressController:
    namespace: example-ingress
    podSelector: |
      matchLabels:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/instance: ingress-nginx
        app.kubernetes.io/component: controller

logLevel: DEBUG

postmaster: postmaster

recipientDelimiter: "+"

limits:
  messageSizeLimitInMegabytes: 50

  authRatelimit:
    ip: 60/hour
    ipv4Mask: 24
    ipv6Mask: 56
    user: 100/day
    exemptionLength: 86400
    exemption: ""

  messageRatelimit:
    value: 200/day
    exemption: ""

externalRelay:
  host: ""
  username: ""
  password: ""
  existingSecret: ""
  usernameKey: "relay-username"
  passwordKey: "relay-password"
  networks: []

clusterDomain: cluster.local

credentialRounds: 12

sessionCookieSecure: true

sessionTimeout: 3600

permanentSessionLifetime: 2592000

letsencryptShortchain: false

customization:
  siteName: "Example - Mail Server"
  website: "https://mail.example.com"
  logoUrl: ""
  logoBackground: ""

welcomeMessage:
  enabled: true
  subject: "Greetings and a warm welcome to Example!"
  body: "Welcome to Example."

wildcardSenders: []

tls:
  outboundLevel: ""
  deferOnError: ""
  inboundEnforce: ""

externalDatabase:
  enabled: false

  type: mysql

  host: mysql-primary.example-databases

  port: 3306

  existingSecret: "mailu"

  existingSecretDatabaseKey: "mysql-db-database"

  existingSecretUsernameKey: "mysql-db-username"

  existingSecretPasswordKey: "mysql-db-password"

externalRedis:
  enabled: false

  host: ""

  port: 6379

  adminQuotaDbId: 1

  adminRateLimitDbId: 2

  rspamdDbId: 0

database:
  mysql:
    roundcubePassword: ""
  postgresql:
    roundcubePassword: ""

mariadb:
  enabled: false

  architecture: standalone

  auth:
    rootPassword: ""
    database: mailu
    username: mailu
    password: ""
    existingSecret: "mailu"

  primary:
    persistence:
      enabled: false
      storageClass: ""
      accessMode: ReadWriteOnce
      size: 8Gi

    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" . }}

  initdbScripts:
    create_roundcube_database.sh: |
      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}" <<SQL
        --
        -- Initialisation script for roundcube database
        --
        CREATE DATABASE IF NOT EXISTS ${ROUNDCUBE_DB_NAME};
        GRANT ALL PRIVILEGES ON ${ROUNDCUBE_DB_NAME}.* TO '${ROUNDCUBE_DB_USER}'@'%' IDENTIFIED BY '${ROUNDCUBE_DB_PW}';
        FLUSH PRIVILEGES;
      SQL
        echo "DB initialisation complete"
      else
        echo "Not running initialisation, exiting..."
      fi

postgresql:
  enabled: false

  architecture: standalone

  auth:
    enablePostgresUser: true
    postgresPassword: changeme
    username: mailu
    password: ""
    database: mailu
    existingSecret: ""

    secretKeys:
      adminPasswordKey: postgres-password
      userPasswordKey: password
      replicationPasswordKey: replication-password

  primary:
    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:
      scripts:
        create_roundcube_database.sh: |
          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

persistence:
  single_pvc: true
  size: 100Gi
  accessModes: [ReadWriteOnce]
  annotations: {}
  hostPath: ""
  existingClaim: mailu
  storageClass: my-nfs
  claimNameOverride: mailu

ingress:
  enabled: true

  ingressClassName: nginx

  pathType: ImplementationSpecific

  apiVersion: ""

  path: /

  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: mailu-certificates

  tls: true

  selfSigned: false

  extraHosts: []

  extraPaths: []

  extraTls: []

  secrets: []

  extraRules: []

  realIpHeader: X-Forwarded-For

  realIpFrom: ""

  tlsFlavorOverride: ""

proxyAuth:
  whitelist: ""

  header: "X-Auth-Email"

  create: "false"

front:
  logLevel: ""

  image:
    repository: mailu/nginx
    tag: ""
    pullPolicy: IfNotPresent

  hostPort:
    enabled: false

  externalService:
    enabled: true
    type: LoadBalancer
    loadBalancerIP: ""
    externalTrafficPolicy: Local
    annotations: {}
    ports:
      pop3: false
      pop3s: true
      imap: false
      imaps: true
      smtp: true
      smtps: true
      submission: true

  kind: Deployment

  replicaCount: 1

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  readinessProbe:
    enabled: true
    failureThreshold: 1
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  startupProbe:
    enabled: false
    failureThreshold: 30
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

admin:
  enabled: true

  uri: /admin

  persistence:
    size: 20Gi
    storageClass: my-nfs
    accessModes: [ReadWriteOnce]
    claimNameOverride: mailu-admin
    annotations: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: false
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

redis:
  enabled: true

  architecture: standalone

  auth:
    enabled: false

  master:
    enabled: true

    count: 1

    persistence:
      enabled: true
      size: 8Gi
      storageClass: my-nfs  
      accessModes: [ReadWriteOnce]
      existingClaim: mailu
      subPath: "/redis"
      annotations: {}

  replica:
    count: 0

postfix:
  logLevel: ""

  image:
    repository: mailu/postfix
    tag: ""
    pullPolicy: IfNotPresent

  persistence:
    size: 20Gi
    storageClass: my-nfs
    accessModes: [ReadWriteOnce]
    claimNameOverride: mailu-postfix
    annotations: {}

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: true
    failureThreshold: 30
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

  overrides: {}

dovecot:
  enabled: true

  logLevel: ""

  image:
    repository: mailu/dovecot
    tag: ""
    pullPolicy: IfNotPresent

  persistence:
    size: 20Gi
    storageClass: my-nfs
    accessModes: [ReadWriteOnce]
    claimNameOverride: mailu-dovecot
    annotations: {}

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10

  startupProbe:
    enabled: false
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 10

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

  overrides: {}

  compression: ""

  compressionLevel: 6

rspamd:
  overrides: {}

  antivirusAction: "discard"

  logLevel: ""

  image:
    repository: mailu/rspamd
    tag: ""
    pullPolicy: IfNotPresent

  persistence:
    size: 1Gi
    storageClass: my-nfs
    accessModes: [ReadWriteOnce]
    claimNameOverride: mailu-rspamd
    annotations: {}

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: true
    failureThreshold: 90
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

clamav:
  enabled: false

  logLevel: ""

  image:
    repository: mailu/clamav
    tag: ""
    pullPolicy: IfNotPresent

  persistence:
     enabled: true

     size: 2Gi

     storageClass: my-nfs

     accessModes: [ReadWriteOnce]

     annotations: {}

     labels: {}

     selector: {}

     dataSource: {}

     existingClaim: mailu-clamav

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: false
    failureThreshold: 60
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

webmail:
  enabled: true

  uri: /webmail

  type: roundcube

  roundcubePlugins:
    - archive
    - zipdownload
    - markasjunk

  logLevel: ""

  image:
    repository: mailu/webmail
    tag: ""
    pullPolicy: IfNotPresent

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: false
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

webdav:
  enabled: false

  logLevel: ""

  image:
    repository: mailu/radicale
    tag: ""
    pullPolicy: IfNotPresent

  persistence:
    size: 20Gi
    storageClass: ""
    accessModes: [ReadWriteOnce]
    claimNameOverride: ""
    annotations: {}

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: false
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

fetchmail:
  enabled: false

  delay: 600

  logLevel: ""

  image:
    repository: mailu/fetchmail
    tag: ""
    pullPolicy: IfNotPresent

  persistence:
    size: 20Gi
    storageClass: ""
    accessModes: [ReadWriteOnce]
    claimNameOverride: ""
    annotations: {}

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  startupProbe:
    enabled: false
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 1

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

oletools:
  enabled: true

  logLevel: ""

  image:
    repository: mailu/oletools
    tag: ""
    pullPolicy: IfNotPresent

  resources:
    limits: {}
    requests: {}

  livenessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  readinessProbe:
    enabled: true
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  startupProbe:
    enabled: false
    failureThreshold: 3
    initialDelaySeconds: 10
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5

  podLabels: {}

  podAnnotations: {}

  nodeSelector: {}

  initContainers: []

  priorityClassName: ""

  podSecurityContext:
    enabled: false
    fsGroup: 1001

  containerSecurityContext:
    enabled: false
    runAsUser: 1001
    runAsNonRoot: false

  terminationGracePeriodSeconds: 2

  affinity: {}

  tolerations: []

  revisionHistoryLimit: 3

  hostAliases: []

  schedulerName: ""

  service:
    annotations: {}

  topologySpreadConstraints: []

  updateStrategy:
    type: RollingUpdate

  extraEnvVars: []

  extraEnvVarsCM: ""

  extraEnvVarsSecret: ""

  extraVolumeMounts: []

  extraVolumes: []

If anyone has encountered a similar problem or has insights into troubleshooting Helm Charts and NFS permissions, your expertise would be invaluable. Please help me get past this roadblock!

Thank you in advance for your time and assistance!

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.