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!