Skip to content

Commit

Permalink
Merge pull request #410 from Miciah/implement-HTTP-Forwarded-header-p…
Browse files Browse the repository at this point in the history
…olicy-API

Implement HTTP Forwarded header policy API
  • Loading branch information
openshift-merge-robot committed Jul 31, 2020
2 parents 3b1f770 + 476387a commit bf76a15
Show file tree
Hide file tree
Showing 5 changed files with 545 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ release-local:

.PHONY: test-e2e
test-e2e:
$(GO) test -count 1 -v -tags e2e -run "$(TEST)" ./test/e2e
$(GO) test -timeout 1h -count 1 -v -tags e2e -run "$(TEST)" ./test/e2e

.PHONY: clean
clean:
Expand Down
19 changes: 19 additions & 0 deletions pkg/operator/controller/ingress/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import (
const (
WildcardRouteAdmissionPolicy = "ROUTER_ALLOW_WILDCARD_ROUTES"

RouterForwardedHeadersPolicy = "ROUTER_SET_FORWARDED_HEADERS"

RouterLogLevelEnvName = "ROUTER_LOG_LEVEL"
RouterSyslogAddressEnvName = "ROUTER_SYSLOG_ADDRESS"
RouterSyslogFormatEnvName = "ROUTER_SYSLOG_FORMAT"
Expand Down Expand Up @@ -565,6 +567,23 @@ func desiredRouterDeployment(ci *operatorv1.IngressController, ingressController
env = append(env, corev1.EnvVar{Name: WildcardRouteAdmissionPolicy, Value: "false"})
}

forwardedHeaderPolicy := operatorv1.AppendHTTPHeaderPolicy
if ci.Spec.HTTPHeaders != nil && len(ci.Spec.HTTPHeaders.ForwardedHeaderPolicy) != 0 {
forwardedHeaderPolicy = ci.Spec.HTTPHeaders.ForwardedHeaderPolicy
}
routerForwardedHeadersPolicyValue := "append"
switch forwardedHeaderPolicy {
case operatorv1.AppendHTTPHeaderPolicy:
// Nothing to do.
case operatorv1.ReplaceHTTPHeaderPolicy:
routerForwardedHeadersPolicyValue = "replace"
case operatorv1.IfNoneHTTPHeaderPolicy:
routerForwardedHeadersPolicyValue = "if-none"
case operatorv1.NeverHTTPHeaderPolicy:
routerForwardedHeadersPolicyValue = "never"
}
env = append(env, corev1.EnvVar{Name: RouterForwardedHeadersPolicy, Value: routerForwardedHeadersPolicyValue})

if HTTP2IsEnabled(ci, ingressConfig) {
env = append(env, corev1.EnvVar{Name: RouterDisableHTTP2EnvName, Value: "false"})
} else {
Expand Down
7 changes: 7 additions & 0 deletions pkg/operator/controller/ingress/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,8 @@ func TestDesiredRouterDeployment(t *testing.T) {
checkDeploymentHasEnvVar(t, deployment, "ROUTER_SYSLOG_FORMAT", true, `"%ci:%cp [%t] %ft %b/%s %B %bq %HM %HU %HV"`)
checkDeploymentHasEnvVar(t, deployment, "ROUTER_CAPTURE_HTTP_COOKIE", true, "foo:256")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_SET_FORWARDED_HEADERS", true, "append")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_CIPHERS", true, "quux")

// TODO: Update when haproxy is built with an openssl version that supports tls v1.3.
Expand Down Expand Up @@ -324,6 +326,9 @@ func TestDesiredRouterDeployment(t *testing.T) {
},
},
}
ci.Spec.HTTPHeaders = &operatorv1.IngressControllerHTTPHeaders{
ForwardedHeaderPolicy: operatorv1.NeverHTTPHeaderPolicy,
}
ci.Spec.NodePlacement = &operatorv1.NodePlacement{
NodeSelector: &metav1.LabelSelector{
MatchLabels: map[string]string{
Expand Down Expand Up @@ -394,6 +399,8 @@ func TestDesiredRouterDeployment(t *testing.T) {
checkDeploymentHasEnvVar(t, deployment, "ROUTER_CAPTURE_HTTP_RESPONSE_HEADERS", true, "Content-length:9,Location:15")
checkDeploymentHasEnvVar(t, deployment, "ROUTER_CAPTURE_HTTP_COOKIE", true, "foo=:15")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_SET_FORWARDED_HEADERS", true, "never")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_IP_V4_V6_MODE", true, "v6")
checkDeploymentHasEnvVar(t, deployment, RouterDisableHTTP2EnvName, true, "true")
}
Expand Down

0 comments on commit bf76a15

Please sign in to comment.