---
updatedAt: 2026-05-21T09:14:56.000Z
agentTools:
  siteIndex: https://docs.jfrog.com/llms.txt
  projectIndex: https://docs.jfrog.com/installation/llms.txt
---

# Custom Volumes in Helm Installation

Mount Kubernetes volumes to JFrog pods using customVolumes and customVolumeMounts in Helm values.yaml.

A Kubernetes volume is a directory accessible to all containers in a pod. To configure custom volumes, use the **customVolumes** and **customVolumeMounts** sections for each product, following the official <a href="https://kubernetes.io/docs/concepts/storage/volumes/" target="_blank">Kubernetes volume parameters</a>.

### Artifactory Example

This example mounts a `configMap` as a custom volume. Any supported Kubernetes volume type works in place of it.

1. To create a **configMap** called `log-config` that contains a `test.yaml` file, run the following command:

   ```bash
   kubectl create configmap log-config --from-file=test.yaml
   ```
2. To create a custom volume, update the **customVolumes** section as follows:

   ```yaml
   artifactory:
     customVolumes: |
       - name: config-vol ## Name of the custom volume
         configMap: ## Predefined parameter of the configMap
           name: log-config
   ```
3. To define the mount path (`/tmp/etc/`) for the volume, update the **customVolumeMounts** section as follows:

   ```yaml
   artifactory:
     customVolumes: |
       - name: config-vol ## Name of the custom volume
         configMap: ## Predefined parameter of the configMap
           name: log-config

     customVolumeMounts: |
       - name: config-vol ## Name of the custom volume    
         mountPath: /tmp/etc/test.yaml
         subPath: test.yaml
   ```
4. These settings bootstrap the **configMap** under the `/tmp/etc` folder. To interact with custom volumes further, use `preStartCommand`.

   ```yaml
   artifactory:
     customVolumes: |
       - name: config-vol
         configMap:
           name: log-config

     customVolumeMounts: |
       - name: config-vol ## The name here must match the name set under customVolumes    
         mountPath: /tmp/etc/test.yaml
         subPath: test.yaml
     preStartCommand: "cat /tmp/etc/test.yaml"
   ```

Follow the same steps to manage custom volumes for **Xray** and **Distribution**, updating the configurations under the correct parent keys.

### Xray Example

```yaml
xray:
  common:
    customVolumes: |
      - name: config-vol
        configMap:
          name: log-config

    customVolumeMounts: |
      - name: config-vol ## The name here must match the name set under customVolumes    
        mountPath: /tmp/etc/test.yaml
        subPath: test.yaml
    preStartCommand: "cat /tmp/etc/test.yaml"
```

### Distribution Example

```yaml
distribution:
  common:
    customVolumes: |
      - name: config-vol
        configMap:
          name: log-config

    customVolumeMounts: |
      - name: config-vol ## The name here must match the name set under customVolumes    
        mountPath: /tmp/etc/test.yaml
        subPath: test.yaml
    preStartCommand: "cat /tmp/etc/test.yaml"
```

## Related Topics

* [All Products - Customization](all-products-customization)
* [Custom Init Containers in Helm Installation](add-custom-init-containers-in-helm-installation)
* [Custom Sidecar Containers in Helm Installations](add-custom-sidecars-containers-in-helm-installations)
* [Distribution Custom Volumes](distribution-custom-volumes)
* [Use ConfigMaps to Store Non-confidential Data](use-configmaps-to-store-non-confidential-data)