Skip to content

Commit db7dfe6

Browse files
Add documentation for PVC permissions in Helm deployments
Add a new section to the Helm deployment documentation explaining the fsGroup security context requirement for persistent volumes. This documents the default podSecurityContext.fsGroup: 1000 setting and warns users about maintaining it when overriding podSecurityContext. Relates to the Helm chart changes that set fsGroup by default to prevent permission errors when using persistent volumes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Hamza Tahir <[email protected]>
1 parent 5ae4057 commit db7dfe6

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

docs/book/getting-started/deploying-zenml/deploy-with-helm.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,30 @@ zenml login http://localhost:8080
147147

148148
This is just a simple example only fit for testing and evaluation purposes. For production deployments, you should use an external database and an Ingress service with TLS certificates to secure and expose the ZenML server to the internet.
149149

150+
### Deployment with persistent local database
151+
152+
When using a local SQLite database with persistence enabled, you need to configure proper volume permissions. The ZenML Helm chart sets `podSecurityContext.fsGroup: 1000` by default to ensure the ZenML container (running as UID 1000) can write to the persistent volume.
153+
154+
Example configuration:
155+
156+
```yaml
157+
zenml:
158+
database:
159+
persistence:
160+
enabled: true
161+
size: "10Gi"
162+
# storageClassName: "" # Optional: use default storage class if not specified
163+
164+
# podSecurityContext.fsGroup is set to 1000 by default
165+
# This ensures the container can write to the persistent volume
166+
```
167+
168+
{% hint style="warning" %}
169+
If you override `podSecurityContext` in your custom values, ensure that `fsGroup: 1000` is included. Without this setting, the persistent volume will be mounted with root:root ownership, causing permission errors and preventing the ZenML server from starting.
170+
{% endhint %}
171+
172+
This configuration is also required when using persistent volumes for database backup dumps. See the [Database backup and recovery](deploy-with-helm.md#database-backup-and-recovery) section for more details.
173+
150174
### Basic deployment with local database
151175

152176
This deployment use-case still uses a local database, but it exposes the ZenML server to the internet using an Ingress service with TLS certificates generated by the cert-manager and signed by Let's Encrypt.

0 commit comments

Comments
 (0)