bottlerocket-os / bottlerocket-os/bottlerocket
Support `containerd` config `image_pull_progress_timeout`
- Dominant language
- Rust
- Stars
- 9.7k
- Forks
- 586
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 11
Description
**What I'd like:**
I want to be able to use Bottlerocket APIs to configure the [`image_pull_progress_timeout`](https://github.com/containerd/containerd/blob/18e931808d1546cab2620332cf95a14d238f1394/internal/cri/config/config.go#L326-L333) for containerd. Per the documentation,
> ImagePullProgressTimeout is the maximum duration that there is no image data read from image registry in the open connection. It will be reset whatever a new byte has been read. If timeout, the image pulling will be cancelled. A zero value means there is no timeout.
This by default is set to 5min (see the [code](https://github.com/containerd/containerd/blob/18e931808d1546cab2620332cf95a14d238f1394/internal/cri/config/config.go#L63)), which would cause long image pull time. Being able to set the timeout to be shorter would allow us to trigger the image pull retry faster.
**Note**: This timeout applies globally to all image pulls and resets whenever new data is received, meaning slow but continuous downloads would not be affected.
**Any alternatives you've considered:**
`dial_timeout` provisioned by `config_path` setting, but it is not available yet and is tracked in
https://github.com/bottlerocket-os/bottlerocket/issues/1963
`dial_timeout` handles connection establishment with fallback capabilities, while `image_pull_progress_timeout` monitors data transfer progress without fallback - they serve somewhat different purpose in the image pull process.
Contributor guide
Assessment
This issue has not been assessed yet.