Skip to content

Commit

Permalink
Merge pull request #650 from Miciah/BZ1997407-configure-router-to-use…
Browse files Browse the repository at this point in the history
…-source-for-passthrough

Bug 1997407: Configure router to use "source" for passthrough
  • Loading branch information
openshift-merge-robot committed Aug 30, 2021
2 parents fbd8fcf + 4a2322f commit 9aa4433
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
10 changes: 9 additions & 1 deletion pkg/operator/controller/ingress/deployment.go
Expand Up @@ -60,7 +60,8 @@ const (
RouterHeaderBufferSize = "ROUTER_BUF_SIZE"
RouterHeaderBufferMaxRewriteSize = "ROUTER_MAX_REWRITE_SIZE"

RouterLoadBalancingAlgorithmEnvName = "ROUTER_LOAD_BALANCE_ALGORITHM"
RouterLoadBalancingAlgorithmEnvName = "ROUTER_LOAD_BALANCE_ALGORITHM"
RouterTCPLoadBalancingAlgorithmEnvName = "ROUTER_TCP_BALANCE_SCHEME"

RouterMaxConnectionsEnvName = "ROUTER_MAX_CONNECTIONS"

Expand Down Expand Up @@ -467,6 +468,10 @@ func desiredRouterDeployment(ci *operatorv1.IngressController, ingressController
}
}

// For non-TLS, edge-terminated, and reencrypt routes, use the "random"
// balancing algorithm by default, but allow an unsupported config
// override to override it. For passthrough routes, use the "source"
// balancing algorithm in order to provide some session-affinity.
loadBalancingAlgorithm := "random"
switch unsupportedConfigOverrides.LoadBalancingAlgorithm {
case "leastconn":
Expand All @@ -475,6 +480,9 @@ func desiredRouterDeployment(ci *operatorv1.IngressController, ingressController
env = append(env, corev1.EnvVar{
Name: RouterLoadBalancingAlgorithmEnvName,
Value: loadBalancingAlgorithm,
}, corev1.EnvVar{
Name: RouterTCPLoadBalancingAlgorithmEnvName,
Value: "source",
})

switch v := unsupportedConfigOverrides.MaxConnections; {
Expand Down
3 changes: 3 additions & 0 deletions pkg/operator/controller/ingress/deployment_test.go
Expand Up @@ -221,6 +221,7 @@ func TestDesiredRouterDeployment(t *testing.T) {
checkDeploymentHasEnvVar(t, deployment, "ROUTER_HAPROXY_CONFIG_MANAGER", false, "")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_LOAD_BALANCE_ALGORITHM", true, "random")
checkDeploymentHasEnvVar(t, deployment, "ROUTER_TCP_BALANCE_SCHEME", true, "source")
checkDeploymentDoesNotHaveEnvVar(t, deployment, "ROUTER_ERRORFILE_503")
checkDeploymentDoesNotHaveEnvVar(t, deployment, "ROUTER_ERRORFILE_404")

Expand Down Expand Up @@ -414,6 +415,7 @@ func TestDesiredRouterDeployment(t *testing.T) {
checkDeploymentHasEnvVar(t, deployment, "ROUTER_HAPROXY_CONFIG_MANAGER", false, "")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_LOAD_BALANCE_ALGORITHM", true, "leastconn")
checkDeploymentHasEnvVar(t, deployment, "ROUTER_TCP_BALANCE_SCHEME", true, "source")
if len(deployment.Spec.Template.Spec.Containers[0].VolumeMounts) <= 4 || deployment.Spec.Template.Spec.Containers[0].VolumeMounts[4].Name != "error-pages" {
t.Errorf("hi")
t.Errorf("deployment.Spec.Template.Spec.Containers[0].VolumeMounts[4].Name %v", deployment.Spec.Template.Spec.Containers[0].VolumeMounts)
Expand Down Expand Up @@ -505,6 +507,7 @@ func TestDesiredRouterDeployment(t *testing.T) {
checkDeploymentHasEnvVar(t, deployment, "ROUTER_HAPROXY_CONFIG_MANAGER", true, "true")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_LOAD_BALANCE_ALGORITHM", true, "random")
checkDeploymentHasEnvVar(t, deployment, "ROUTER_TCP_BALANCE_SCHEME", true, "source")

checkDeploymentHasEnvVar(t, deployment, "ROUTER_MAX_CONNECTIONS", true, "40000")

Expand Down

0 comments on commit 9aa4433

Please sign in to comment.