Skip to content

Fix main includes #2666

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions charts/nginx-gateway-fabric/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,20 @@
"required": [],
"title": "securityContext",
"type": "object"
},
"snippetsFilters": {
"properties": {
"enable": {
"default": false,
"description": "Enable SnippetsFilters feature. SnippetsFilters allow inserting NGINX configuration into the generated NGINX\nconfig for HTTPRoute and GRPCRoute resources.",
"required": [],
"title": "enable",
"type": "boolean"
}
},
"required": [],
"title": "snippetsFilters",
"type": "object"
}
},
"required": [
Expand Down
43 changes: 43 additions & 0 deletions deploy/snippets-filters-nginx-plus/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,19 @@ subjects:
namespace: nginx-gateway
---
apiVersion: v1
data:
main.conf: |
error_log stderr info;
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: edge
name: nginx-includes
namespace: nginx-gateway
---
apiVersion: v1
kind: Service
metadata:
labels:
Expand Down Expand Up @@ -299,6 +312,33 @@ spec:
name: nginx-cache
- mountPath: /etc/nginx/includes
name: nginx-includes
initContainers:
- command:
- /usr/bin/gateway
- copy
- --source
- /includes/main.conf
- --destination
- /etc/nginx/main-includes/main.conf
image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
imagePullPolicy: Always
name: copy-nginx-config
securityContext:
capabilities:
add:
- KILL
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsUser: 102
seccompProfile:
type: RuntimeDefault
volumeMounts:
- mountPath: /includes
name: nginx-includes-configmap
- mountPath: /etc/nginx/main-includes
name: nginx-main-includes
securityContext:
fsGroup: 1001
runAsNonRoot: true
Expand All @@ -320,6 +360,9 @@ spec:
name: nginx-cache
- emptyDir: {}
name: nginx-includes
- configMap:
name: nginx-includes
name: nginx-includes-configmap
---
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
Expand Down
43 changes: 43 additions & 0 deletions deploy/snippets-filters/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,19 @@ subjects:
namespace: nginx-gateway
---
apiVersion: v1
data:
main.conf: |
error_log stderr info;
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: nginx-gateway
app.kubernetes.io/name: nginx-gateway
app.kubernetes.io/version: edge
name: nginx-includes
namespace: nginx-gateway
---
apiVersion: v1
kind: Service
metadata:
labels:
Expand Down Expand Up @@ -290,6 +303,33 @@ spec:
name: nginx-cache
- mountPath: /etc/nginx/includes
name: nginx-includes
initContainers:
- command:
- /usr/bin/gateway
- copy
- --source
- /includes/main.conf
- --destination
- /etc/nginx/main-includes/main.conf
image: ghcr.io/nginxinc/nginx-gateway-fabric:edge
imagePullPolicy: Always
name: copy-nginx-config
securityContext:
capabilities:
add:
- KILL
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 1001
runAsUser: 102
seccompProfile:
type: RuntimeDefault
volumeMounts:
- mountPath: /includes
name: nginx-includes-configmap
- mountPath: /etc/nginx/main-includes
name: nginx-main-includes
securityContext:
fsGroup: 1001
runAsNonRoot: true
Expand All @@ -311,6 +351,9 @@ spec:
name: nginx-cache
- emptyDir: {}
name: nginx-includes
- configMap:
name: nginx-includes
name: nginx-includes-configmap
---
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
Expand Down
1 change: 0 additions & 1 deletion internal/mode/static/nginx/config/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,6 @@ func (g GeneratorImpl) getExecuteFuncs(generator policies.Generator) []executeFu
g.executeStreamUpstreams,
executeStreamMaps,
executeVersion,
executeMainIncludesConfig,
}
}

Expand Down
8 changes: 4 additions & 4 deletions internal/mode/static/nginx/config/main_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ import (
var mainConfigTemplate = gotemplate.Must(gotemplate.New("main").Parse(mainConfigTemplateText))

type mainConfig struct {
Includes []shared.Include
TelemetryEnabled bool
Includes []shared.Include
Conf dataplane.Configuration
}

func executeMainConfig(conf dataplane.Configuration) []executeResult {
includes := createIncludesFromSnippets(conf.MainSnippets)

mc := mainConfig{
TelemetryEnabled: conf.Telemetry.Endpoint != "",
Includes: includes,
Conf: conf,
Includes: includes,
}

results := make([]executeResult, 0, len(includes)+1)
Expand Down
4 changes: 3 additions & 1 deletion internal/mode/static/nginx/config/main_config_template.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package config

const mainConfigTemplateText = `
{{ if .TelemetryEnabled -}}
{{ if .Conf.Telemetry.Endpoint -}}
load_module modules/ngx_otel_module.so;
{{ end -}}

error_log stderr {{ .Conf.Logging.ErrorLevel }};

{{ range $i := .Includes -}}
include {{ $i.Name }};
{{ end -}}
Expand Down
18 changes: 18 additions & 0 deletions internal/mode/static/nginx/config/main_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,24 @@ func TestExecuteMainConfig_Telemetry(t *testing.T) {
}
}

func TestExecuteMainConfig_Logging(t *testing.T) {
t.Parallel()

conf := dataplane.Configuration{
Logging: dataplane.Logging{
ErrorLevel: "info",
},
}

g := NewWithT(t)

res := executeMainConfig(conf)
g.Expect(res).To(HaveLen(1))
g.Expect(res[0].dest).To(Equal(mainIncludesConfigFile))

g.Expect(string(res[0].data)).To(ContainSubstring("error_log stderr info"))
}

func TestExecuteMainConfig_Snippets(t *testing.T) {
t.Parallel()

Expand Down
19 changes: 0 additions & 19 deletions internal/mode/static/nginx/config/main_includes.go

This file was deleted.

7 changes: 0 additions & 7 deletions internal/mode/static/nginx/config/main_includes_template.go

This file was deleted.

72 changes: 0 additions & 72 deletions internal/mode/static/nginx/config/main_includes_test.go

This file was deleted.

Loading