Webservice: Set different shutdown.blackout_seconds for different deployments
Summary
(Summarize the bug encountered, concisely as possible)
For websockets and future deployments like API and Web we would like to set a different values for shutdown.blackoutSeconds which sets how log puma will run after receiving a SIGINT.
This field is present in the datamodel but all deployments share a single configmap.
I don't believe there is any other place where we need to diverge gitlab.yml configuration per deployment. This will be important when we migrate the API/Web fleet since for Git HTTPs we need to tolerate connections that live longer than regular web requests.
Another option I am thinking is that we can override this with an environment variable https://gitlab.com/gitlab-org/gitlab/-/blob/7ff0058a15bbedce3657d5fd5b8b0d67bd2c8b68/config/initializers/1_settings.rb#L883 with something like GITLAB_BLACKOUT_SECONDS which would be less impactful for charts, in this case we would just need to omit the value from the configmap if it isn't defined.
this is a kubernetes-migration-blocker for the API migration
Steps to reproduce
Configure as below, and see that only one ConfigMap is generated, resulting in the chart level setting being observed.
Configuration used
gitlab:
  webservice:
    shutdown: # chart
      blackoutSeconds: 10
    deployments:
      websockets:
        shutdown: # just for websockets
          blackoutSeconds: 0Current behavior
kind: ConfigMap
metadata:
  name: rvw-ci-helm-relname-webservice
...
data:
  gitlab.yml.erb |
...
   shutdown:                                                                                
     blackout_seconds: 10
...Expected behavior
Ability to control this on a per-deployment level.
Versions
- Chart: (tagged version | branch | hash git rev-parse HEAD)
- Platform:
- Cloud: (GKE | AKS | EKS | ?)
- Self-hosted: (OpenShift | Minikube | Rancher RKE | ?)
 
- Kubernetes: (kubectl version)- Client:
- Server:
 
- Helm: (helm version)- Client:
- Server:
 
Relevant logs
(Please provide any relevate log snippets you have collected, using code blocks (```) to format)