Add support for NGINX `proxy_request_buffering` configuration
Summary
Original issue: https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit-configs/staging-ref/-/issues/161
NGINX proxy_request_buffering
is enabled by default, but it breaks a functionality of endpoints responsible for transferring git data via SSH protocol.
Requests from GitLab-Shell to Workhorse hang and that breaks git fetch/git push
commands.
In issue gitlab-org/gitlab#466160 (closed) I've excluded two more endpoints from proxy_request_buffering
list in GDK and Omnibus
But these changes don't affect Helm Chart deployments.
Goal
Define a way to exclude a list of endpoints from NGINX proxy_request_buffering
configuration for Helm Chart deployments.
More details
@WarheadsSE
comments:
The request from GitLab-Shell to Workhorse was hanging. After investigation I discovered the root cause of this problem.
In most CNH, shell is in :kubernetes: In the :kubernetes: deployment via Helm, Shell talks directly to to the Webservice's Service object, and does not go through NGINX.
As this primarily affects Shells' HTTP calls to Workhorse ... We'd need this to somehow be defined in the Webservices Ingress object.
(Though again, you 'd have to have a large, distributed fleet that could not talk directly)
Currently we don't apply any of these types of configuration, apparently. Out of the box, it is fully disabled in Ingress NGINX (which is what we use) https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#proxy-buffering