The first command-line argument of the FlexVolume driver is always an operation name. Other parameters are specific to each operation. Most of the operations take a JavaScript Object Notation (JSON) string as a parameter. This parameter is a complete JSON string, and not the name of a file with the JSON data.
The FlexVolume driver contains:
-
All flexVolume.options.
-
Some options from flexVolume prefixed by kubernetes.io/, such as fsType and readwrite.
-
The content of the referenced secret, if specified, prefixed by kubernetes.io/secret/.
FlexVolume driver JSON input example
{
"fooServer": "192.168.0.1:1234", (1)
"fooVolumeName": "bar",
"kubernetes.io/fsType": "ext4", (2)
"kubernetes.io/readwrite": "ro", (3)
"kubernetes.io/secret/<key name>": "<key value>", (4)
"kubernetes.io/secret/<another key name>": "<another key value>",
}
| 1 |
All options from flexVolume.options. |
| 2 |
The value of flexVolume.fsType. |
| 3 |
ro/rw based on flexVolume.readOnly. |
| 4 |
All keys and their values from the secret referenced by flexVolume.secretRef. |
OKD expects JSON data on standard output of the driver. When not
specified, the output describes the result of the operation.
FlexVolume driver default output example
{
"status": "<Success/Failure/Not supported>",
"message": "<Reason for success/failure>"
}
Exit code of the driver should be 0 for success and 1 for error.
Operations should be idempotent, which means that the mounting of an already mounted volume should result in a successful operation.