About adding volumes to a pod
You can add volumes and volume mounts to a pod. Volumes persist the data used by the containers, even if container crashes or stops.
You can add a volume, a volume mount, or both to pod templates by running the following command:
$ oc set volume <object_type>/<name> --add [options]
| Option | Description | Default |
|---|---|---|
|
Name of the volume. |
Automatically generated, if not specified. |
|
Name of the volume source. Supported values: |
|
|
Select containers by name. It can also take wildcard |
|
|
Mount path inside the selected containers. Do not mount to the container root, |
|
|
Host path. Mandatory parameter for |
|
|
Name of the secret. Mandatory parameter for |
|
|
Name of the configmap. Mandatory parameter for |
|
|
Name of the persistent volume claim. Mandatory parameter for
|
|
|
Details of volume source as a JSON string. Recommended if the desired volume
source is not supported by |
|
|
Display the modified objects instead of updating them on the server. Supported
values: |
|
|
Output the modified objects with the given version. |
|
For example:
-
To add a new volume source emptyDir to the registry
DeploymentConfigobject:$ oc set volume dc/registry --addYou can alternatively apply the following YAML to add the volume:
Sample deployment config with an added volume
kind: DeploymentConfig apiVersion: apps.openshift.io/v1 metadata: name: registry namespace: registry spec: replicas: 3 selector: app: httpd template: metadata: labels: app: httpd spec: volumes: - name: volume-pppsw emptyDir: {} containers: - name: httpd image: >- image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest ports: - containerPort: 8080 protocol: TCPwhere:
spec.template.spec.volumes-
Specifies the volume source emptyDir.
-
To add volume v1 with secret secret1 for replication controller r1 and mount inside the containers at /data:
$ oc set volume rc/r1 --add --name=v1 --type=secret --secret-name='secret1' --mount-path=/dataYou can alternatively apply the following YAML to add the volume:
Sample replication controller with added volume and secret
kind: ReplicationController apiVersion: v1 metadata: name: example-1 namespace: example spec: replicas: 0 selector: app: httpd deployment: example-1 deploymentconfig: example template: metadata: creationTimestamp: null labels: app: httpd deployment: example-1 deploymentconfig: example spec: volumes: - name: v1 secret: secretName: secret1 defaultMode: 420 containers: - name: httpd image: >- image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest volumeMounts: - name: v1 mountPath: /datawhere:
spec.template.spec.volumes-
Specifies the volume and secret.
spec.template.spec.containers.volumeMounts-
Specifies the container mount path.
-
To add existing persistent volume v1 with claim name pvc1 to deployment configuration dc.json on disk, mount the volume on container c1 at /data, and update the
DeploymentConfigobject on the server:$ oc set volume -f dc.json --add --name=v1 --type=persistentVolumeClaim \ --claim-name=pvc1 --mount-path=/data --containers=c1You can alternatively apply the following YAML to add the volume:
Sample deployment config with persistent volume added
kind: DeploymentConfig apiVersion: apps.openshift.io/v1 metadata: name: example namespace: example spec: replicas: 3 selector: app: httpd template: metadata: labels: app: httpd spec: volumes: - name: volume-pppsw emptyDir: {} - name: v1 persistentVolumeClaim: claimName: pvc1 containers: - name: httpd image: >- image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest ports: - containerPort: 8080 protocol: TCP volumeMounts: - name: v1 mountPath: /datawhere:
spec.template.spec.volumes.name.v1-
Specifies the persistent volume claim named
pvc1. spec.template.spec.containers.volumeMounts-
Specifies the container mount path.
-
To add a volume v1 based on Git repository https://github.com/namespace1/project1 with revision 5125c45f9f563 for all replication controllers:
$ oc set volume rc --all --add --name=v1 \ --source='{"gitRepo": { "repository": "https://github.com/namespace1/project1", "revision": "5125c45f9f563" }}'