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..358a0af --- /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 {{ .Values.nginx.backend.port }}; + server_name {{ .Values.nginx.backend.host }}; + + 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 deleted file mode 100644 index 25b32e5..0000000 --- a/helm/config/nginx.conf +++ /dev/null @@ -1,150 +0,0 @@ -load_module /otel/otel_ngx_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; -pid /tmp/nginx.pid; - -events { - worker_connections 1024; -} - -http { - opentelemetry_config /otel/otel-nginx.toml; - 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; - - 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; - -} diff --git a/helm/templates/nginx/nginx-configmap.yaml b/helm/templates/nginx/nginx-configmap.yaml index 2a3efd7..56844b0 100644 --- a/helm/templates/nginx/nginx-configmap.yaml +++ b/helm/templates/nginx/nginx-configmap.yaml @@ -12,5 +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 356b2a4..762bab4 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.1" port: 8080 - internalServicePort: 80 targetPort: 8080 nodePort: 30003 + backend: + host: "127.0.0.1" + port: 8082 + + opentelemetry: + serviceName: "" + exporterHost: "" + exporterPort: 4317 + samplerMethod: "AlwaysOff" + ratio: 10 + extraVolumes: - name: nginx-config configMap: @@ -82,9 +92,9 @@ nginx: claimName: "internal-pvc-nfs" extraVolumeMounts: - - mountPath: "/etc/nginx/nginx.conf" + - mountPath: "/etc/nginx/conf.d/downloads.conf" name: nginx-config - subPath: nginx.conf + subPath: downloads.conf - name: gpkgs-storage mountPath: /usr/share/nginx/html/downloads subPath: gpkgs @@ -115,12 +125,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: "*"