From fb709201f0ae1d54b26f1d9b5975448ac25a9999 Mon Sep 17 00:00:00 2001 From: almog8k Date: Thu, 19 Mar 2026 13:42:02 +0200 Subject: [PATCH 1/2] feat: upgrade nginx version and add downloads configuration --- helm/Chart.yaml | 4 +- helm/config/downloads.conf | 41 ++++++ helm/config/nginx.conf | 144 ++-------------------- helm/templates/nginx/nginx-configmap.yaml | 1 + helm/values.yaml | 31 +++-- 5 files changed, 80 insertions(+), 141 deletions(-) create mode 100644 helm/config/downloads.conf diff --git a/helm/Chart.yaml b/helm/Chart.yaml index 98370af..b48b6c7 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -6,5 +6,5 @@ version: 2.2.2 appVersion: 2.2.2 dependencies: - name: nginx - version: 1.3.0 - repository: oci://acrarolibotnonprod.azurecr.io/helm + version: 2.1.1 + repository: oci://acrarolibotnonprod.azurecr.io/helm/common diff --git a/helm/config/downloads.conf b/helm/config/downloads.conf new file mode 100644 index 0000000..6bb5881 --- /dev/null +++ b/helm/config/downloads.conf @@ -0,0 +1,41 @@ +{{- $storage := (include "common.storage.merged" .) | fromYaml }} +{{- $serviceUrls := (include "common.serviceUrls.merged" .) | fromYaml }} + +server { + listen 8080; + server_name localhost; + + location /downloads { + {{- if eq (upper $storage.gpkgProvider) "FS" }} + # FS provider + root /usr/share/nginx/html; + types {} + {{- end }} + + {{- if eq (upper $storage.gpkgProvider) "S3" }} + # S3 provider + rewrite ^/downloads/(.*) /$1 break; + + proxy_pass {{ $serviceUrls.ngnixS3Gateway }}; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # Timeouts for larger files + proxy_connect_timeout 300; + proxy_send_timeout 300; + proxy_read_timeout 300; + send_timeout 300; + + # Buffer settings for handling large files + proxy_buffering off; + proxy_max_temp_file_size 0; + {{- end }} + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/helm/config/nginx.conf b/helm/config/nginx.conf index 25b32e5..8a86cc4 100644 --- a/helm/config/nginx.conf +++ b/helm/config/nginx.conf @@ -1,11 +1,8 @@ -load_module /otel/otel_ngx_module.so; +load_module modules/ngx_otel_module.so; load_module modules/ngx_http_js_module.so; -{{- $storage := (include "common.storage.merged" .) | fromYaml }} -{{- $serviceUrls := (include "common.serviceUrls.merged" .) | fromYaml }} -# user nginx; worker_processes 4; -error_log /var/log/nginx/error.log; +error_log /var/log/nginx/error.log warn; pid /tmp/nginx.pid; events { @@ -13,138 +10,21 @@ events { } http { - opentelemetry_config /otel/otel-nginx.toml; + otel_service_name {{ .Values.nginx.opentelemetry.serviceName }}; + otel_exporter { + endpoint {{ .Values.nginx.opentelemetry.exporterHost }}:{{ .Values.nginx.opentelemetry.exporterPort }}; + } + otel_trace on; + include /etc/nginx/mime.types; default_type application/octet-stream; - log_format json escape=json - '{' - '"Attributes": {' - '"time_local": "$time_local",' - '"http.status_code": $status,' - '"http.url": "$http_referer",' - '"http.x_forwarded_for": "$http_x_forwarded_for",' - '"http.proxy_add_x_forwarded_for": "$proxy_add_x_forwarded_for",' - '"http.user_agent": "$http_user_agent",' - '"http.request_time": $request_time,' - '"request_length": "$request_length",' - '"http.host": "$host",' - '"upstream_addr": "$upstream_addr",' - '"upstream_status": "$upstream_status",' - '"upstream_connect_time": "$upstream_connect_time",' - '"upstream_header_time": "$upstream_header_time",' - '"upstream_response_time": "$upstream_response_time",' - '"upstream_response_length": "$upstream_response_length",' - '"upstream_bytes_sent": "$upstream_bytes_sent",' - '"upstream_bytes_received": "$upstream_bytes_received",' - '"upstream_http_name": "$upstream_http_name",' - '"bytes_sent": "$bytes_sent",' - '"body_bytes_sent": "$body_bytes_sent",' - '"content_type":"$content_type",' - '"content_length":"$content_length",' - '"remote_addr": "$remote_addr",' - '"remote_port": "$remote_port",' - '"remote_user": "$remote_user",' - '"connection":"$connection",' - '"cache_status":"$upstream_cache_status",' - '"connection_requests": "$connection_requests",' - '"connections_active": "$connections_active",' - '"connections_reading": "$connections_reading",' - '"connections_writing": "$connections_writing",' - '"connections_waiting": "$connections_waiting",' - '"ancient_browser": "$ancient_browser",' - '"modern_browser": "$modern_browser",' - '"binary_remote_addr": "$binary_remote_addr",' - '"hostname": "$hostname",' - '"http_name": "$http_name",' - '"pid": "$pid",' - '"proxy_protocol_addr": "$proxy_protocol_addr",' - '"proxy_protocol_port": "$proxy_protocol_port",' - '"proxy_protocol_server_addr": "$proxy_protocol_server_addr",' - '"proxy_protocol_server_port": "$proxy_protocol_server_port",' - '"proxy_host": "$proxy_host",' - '"proxy_port": "$proxy_port",' - '"realip_remote_addr": "$realip_remote_addr",' - '"realip_remote_port": "$realip_remote_port",' - '"realpath_root": "$realpath_root",' - '"server_name": "$server_name",' - '"server_addr ": "$server_addr ",' - '"server_port": "$server_port",' - '"server_protocol": "$server_protocol",' - '"ssl_client_serial": "$ssl_client_serial",' - '"ssl_client_fingerprint": "$ssl_client_fingerprint",' - '"ssl_client_i_dn": "$ssl_client_i_dn",' - '"ssl_client_i_dn_legacy": "$ssl_client_i_dn_legacy",' - '"ssl_client_s_dn": "$ssl_client_s_dn",' - '"ssl_client_s_dn_legacy": "$ssl_client_s_dn_legacy",' - '"ssl_session_id": "$ssl_session_id",' - '"ssl_session_reused": "$ssl_session_reused",' - '"tcpinfo_rtt": "$tcpinfo_rtt",' - '"tcpinfo_rttvar": "$tcpinfo_rttvar",' - '"tcpinfo_snd_cwnd": "$tcpinfo_snd_cwnd",' - '"tcpinfo_rcv_space": "$tcpinfo_rcv_space",' - '"uid_got": "$uid_got",' - '"uid_reset": "$uid_reset",' - '"uid_set": "$uid_set"' - '},' - #'"TraceId": "$opentelemetry_trace_id",' ## this is a byte sequence (hex-encoded in JSON) - #'"SpanId": "$opentelemetry_span_id",' - '"SeverityText": "INFO",' - '"SeverityNumber": 9,' - '"RequestBody": "$request_body",' - '"Body": "$request"' - '}'; - - access_log /var/log/nginx/access.log json; + include /etc/nginx/log_format.conf; + access_log /var/log/nginx/access.log main; sendfile on; - tcp_nopush on; - tcp_nodelay on; keepalive_timeout 65; - types_hash_max_size 2048; - - server { - listen 8080; - server_name localhost; - - - - location /downloads { - - # FS provider - {{- if eq (upper $storage.gpkgProvider) "FS" }} - root /usr/share/nginx/html; - types {} - {{- end }} - - # S3 provider - {{- if eq (upper $storage.gpkgProvider) "S3" }} - # Remove /s3 prefix before sending to gateway - rewrite ^/downloads/(.*) /$1 break; - - proxy_pass {{ $serviceUrls.ngnixS3Gateway}}; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # Timeouts for larger files, base on future file download performance testing those values might need to be adjusted - proxy_connect_timeout 300; - proxy_send_timeout 300; - proxy_read_timeout 300; - send_timeout 300; - - # Buffer settings for handling large files. - proxy_buffering off; - proxy_max_temp_file_size 0; - {{- end }} - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } - } - include /etc/nginx/conf.d/*.conf; + include /etc/nginx/conf.d/downloads.conf; + include /etc/nginx/conf.d/status_site.conf; } diff --git a/helm/templates/nginx/nginx-configmap.yaml b/helm/templates/nginx/nginx-configmap.yaml index 2a3efd7..464edbe 100644 --- a/helm/templates/nginx/nginx-configmap.yaml +++ b/helm/templates/nginx/nginx-configmap.yaml @@ -13,4 +13,5 @@ metadata: release: {{ $releaseName }} data: nginx.conf: {{ tpl (.Files.Get "config/nginx.conf") . | quote }} + downloads.conf: {{ tpl (.Files.Get "config/downloads.conf") . | quote }} {{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 356b2a4..3794265 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -66,13 +66,23 @@ nginx: enabled: false replicaCount: 1 image: - repository: nginx-otel-unprivileged - tag: "v1.0.0" + repository: common/nginx + tag: "v2.1.0" port: 8080 - internalServicePort: 80 targetPort: 8080 nodePort: 30003 + backend: + host: "localhost" # file-server doesn't have backend, so we can set it to localhost or any value + port: 8080 + + opentelemetry: + serviceName: files-server + exporterHost: "" + exporterPort: 4317 + samplerMethod: "AlwaysOff" + ratio: 10 + extraVolumes: - name: nginx-config configMap: @@ -85,6 +95,9 @@ nginx: - mountPath: "/etc/nginx/nginx.conf" name: nginx-config subPath: nginx.conf + - mountPath: "/etc/nginx/conf.d/downloads.conf" + name: nginx-config + subPath: downloads.conf - name: gpkgs-storage mountPath: /usr/share/nginx/html/downloads subPath: gpkgs @@ -115,12 +128,16 @@ nginx: caCertificate: "" ingress: enabled: false - type: "nginx-org" # supported values: 'nginx-org' | 'nginx-kubernetes - path: / - host: "" + ingressClassName: nginx + additionalAnnotations: {} + ingressMapping: + - path: / + host: "" + pathType: Prefix + domain: "" tls: enabled: false - useExternal: "" + secretName: "" cors: enabled: true origin: "*" From e051ddbafe3eff7254880d4e3ab07b1f3647d804 Mon Sep 17 00:00:00 2001 From: almog8k Date: Wed, 25 Mar 2026 17:32:36 +0200 Subject: [PATCH 2/2] feat: update nginx configuration and remove unused nginx.conf --- helm/config/downloads.conf | 6 ++--- helm/config/nginx.conf | 30 ----------------------- helm/templates/nginx/nginx-configmap.yaml | 1 - helm/values.yaml | 11 +++------ 4 files changed, 7 insertions(+), 41 deletions(-) delete mode 100644 helm/config/nginx.conf diff --git a/helm/config/downloads.conf b/helm/config/downloads.conf index 6bb5881..358a0af 100644 --- a/helm/config/downloads.conf +++ b/helm/config/downloads.conf @@ -2,9 +2,9 @@ {{- $serviceUrls := (include "common.serviceUrls.merged" .) | fromYaml }} server { - listen 8080; - server_name localhost; - + listen {{ .Values.nginx.backend.port }}; + server_name {{ .Values.nginx.backend.host }}; + location /downloads { {{- if eq (upper $storage.gpkgProvider) "FS" }} # FS provider diff --git a/helm/config/nginx.conf b/helm/config/nginx.conf deleted file mode 100644 index 8a86cc4..0000000 --- a/helm/config/nginx.conf +++ /dev/null @@ -1,30 +0,0 @@ -load_module modules/ngx_otel_module.so; -load_module modules/ngx_http_js_module.so; - -worker_processes 4; -error_log /var/log/nginx/error.log warn; -pid /tmp/nginx.pid; - -events { - worker_connections 1024; -} - -http { - otel_service_name {{ .Values.nginx.opentelemetry.serviceName }}; - otel_exporter { - endpoint {{ .Values.nginx.opentelemetry.exporterHost }}:{{ .Values.nginx.opentelemetry.exporterPort }}; - } - otel_trace on; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - include /etc/nginx/log_format.conf; - access_log /var/log/nginx/access.log main; - - sendfile on; - keepalive_timeout 65; - - include /etc/nginx/conf.d/downloads.conf; - include /etc/nginx/conf.d/status_site.conf; -} diff --git a/helm/templates/nginx/nginx-configmap.yaml b/helm/templates/nginx/nginx-configmap.yaml index 464edbe..56844b0 100644 --- a/helm/templates/nginx/nginx-configmap.yaml +++ b/helm/templates/nginx/nginx-configmap.yaml @@ -12,6 +12,5 @@ metadata: environment: {{ .Values.environment }} release: {{ $releaseName }} data: - nginx.conf: {{ tpl (.Files.Get "config/nginx.conf") . | quote }} downloads.conf: {{ tpl (.Files.Get "config/downloads.conf") . | quote }} {{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 3794265..762bab4 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -67,17 +67,17 @@ nginx: replicaCount: 1 image: repository: common/nginx - tag: "v2.1.0" + tag: "v2.1.1" port: 8080 targetPort: 8080 nodePort: 30003 backend: - host: "localhost" # file-server doesn't have backend, so we can set it to localhost or any value - port: 8080 + host: "127.0.0.1" + port: 8082 opentelemetry: - serviceName: files-server + serviceName: "" exporterHost: "" exporterPort: 4317 samplerMethod: "AlwaysOff" @@ -92,9 +92,6 @@ nginx: claimName: "internal-pvc-nfs" extraVolumeMounts: - - mountPath: "/etc/nginx/nginx.conf" - name: nginx-config - subPath: nginx.conf - mountPath: "/etc/nginx/conf.d/downloads.conf" name: nginx-config subPath: downloads.conf