When pushing images to a self hosted Docker registry installed using their official helm chart, this works for some images. But for one image, I'm not able to push two layers. Docker retry it several times, without success.
3a6fab8d5d23: Retrying in 2 seconds
The logs of the Kubernetes pod gave me the following error:
unknown error reading request payload: unexpected EOF
Both layers were relatively large (252.5 MB/ 393.8 MB).
What I already tried on the Ingress
I had the Kubernetes Nginx Ingress behind my registy. Using the direct NodePort
without Ingress, it works perfectly. So it seems that some limits of the Ingress break the upload. The following annotations were applied:
ingress: enabled: true hosts: - my-docker-registry.domain tls: - hosts: - my-docker-registry.domain annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/proxy-read-timeout: "900" nginx.ingress.kubernetes.io/proxy-send-timeout: "900"
This was taken from the Nginx Ingress documentation, where a Docker Registry behind Nginx acts as example. Are there any other limits I need to increase so that my registry will properly work behind the Ingress?
Background
I want to install the Component Pack for IBM Connections. IBM has a very special way to deliver this Kubernetes based application: You get a ~4GB Zip file. It contains all images and helm charts as well as a shell script, which tags and pushes all those images to a custom registry. The cnx-ingress
image is relatively large:
:~/Downloads/IC-ComponentPack-6.0.0.8# l microservices_connections/hybridcloud/images/cnx-ingress.tar -rw------- 1 daniel daniel 739M Mär 29 13:18 microservices_connections/hybridcloud/images/cnx-ingress.tar