Merge pull request #3518 from crosbymichael/processors
Add docs for stream processors
This commit is contained in:
commit
ea13c9fe99
42
docs/stream_processors.md
Normal file
42
docs/stream_processors.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Stream Processors
|
||||||
|
|
||||||
|
## Processor API
|
||||||
|
|
||||||
|
Processors are a binary API that works off of content streams.
|
||||||
|
|
||||||
|
The incoming content stream will be provided to the binary via `STDIN`
|
||||||
|
and the stream processor is expected to output the processed stream on
|
||||||
|
`STDOUT`. If errors are encountered, errors MUST be returned via `STDERR`
|
||||||
|
with a non-zero exit status.
|
||||||
|
|
||||||
|
Additional information can be provided to stream processors via a payload.
|
||||||
|
Payloads are marshaled as `protobuf.Any` types and can wrap any type of
|
||||||
|
serialized data structure.
|
||||||
|
|
||||||
|
On Unix systems, the payload, if available, is provided on `fd 3` for the process.
|
||||||
|
|
||||||
|
On Windows systems, the payload, if available, is provided via a named pipe with the
|
||||||
|
pipe's path set as the value of the environment variable `STREAM_PROCESSOR_PIPE`.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
To configure stream processors for containerd, entries in the config file need to be made.
|
||||||
|
The `stream_processors` field is an array so that users can chain together multiple processors
|
||||||
|
to mutate content streams.
|
||||||
|
|
||||||
|
Processor Fields:
|
||||||
|
|
||||||
|
* `id` - ID of the processor, used for passing a specific payload to the processor.
|
||||||
|
* `accepts` - Accepted media-types for the processor that it can handle.
|
||||||
|
* `returns` - The media-type that the processor returns.
|
||||||
|
* `path` - Path to the processor binary.
|
||||||
|
* `args` - Arguments passed to the processor binary.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[stream_processors]]
|
||||||
|
id = "io.containerd.processor.v1.pigz"
|
||||||
|
accepts = ["application/vnd.docker.image.rootfs.diff.tar.gzip"]
|
||||||
|
returns = "application/vnd.oci.image.layer.v1.tar"
|
||||||
|
path = "unpigz"
|
||||||
|
args = ["-d", "-c"]
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user