aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-03-27 12:46:37 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2020-03-27 12:46:37 +0100
commitd772522499db381df8ee43fea95343e1500dcfef (patch)
tree0db6c0d1afae41920deb978c564d1994d0c51dbd
parente63f7068d3716ef7aa174d6ae7c9a5a5dd754ee3 (diff)
Add feature flag to enable Nginx upstream proxy protocol
-rw-r--r--configdefinitions/src/vespa/lb-services.def3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java9
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java5
3 files changed, 17 insertions, 0 deletions
diff --git a/configdefinitions/src/vespa/lb-services.def b/configdefinitions/src/vespa/lb-services.def
index 33c568061fe..cc496a99c20 100644
--- a/configdefinitions/src/vespa/lb-services.def
+++ b/configdefinitions/src/vespa/lb-services.def
@@ -4,6 +4,9 @@
namespace=cloud.config
+# Enable proxy-protocol for nginx upstreams
+nginxUpstreamProxyProtocol bool default=false
+
# Active rotation given as flag 'active' for a prod region in deployment.xml
# Default true for now (since code in config-model to set it is not ready yet), should have no default value
tenants{}.applications{}.activeRotation bool default=true
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java
index 6366576e163..7031e80e1d7 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java
@@ -9,7 +9,11 @@ import com.yahoo.config.model.api.ServiceInfo;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
+import com.yahoo.config.provision.zone.ZoneId;
+import com.yahoo.vespa.flags.BooleanFlag;
+import com.yahoo.vespa.flags.FetchVector;
import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import java.util.Collections;
import java.util.Comparator;
@@ -32,14 +36,19 @@ public class LbServicesProducer implements LbServicesConfig.Producer {
private final Map<TenantName, Set<ApplicationInfo>> models;
private final Zone zone;
+ private final BooleanFlag nginxUpstreamProxyProtocol;
public LbServicesProducer(Map<TenantName, Set<ApplicationInfo>> models, Zone zone, FlagSource flagSource) {
this.models = models;
this.zone = zone;
+ this.nginxUpstreamProxyProtocol = Flags.NGINX_UPSTREAM_PROXY_PROTOCOL.bindTo(flagSource);
}
@Override
public void getConfig(LbServicesConfig.Builder builder) {
+ ZoneId zoneId = ZoneId.from(zone.environment().value(), zone.region().value());
+ builder.nginxUpstreamProxyProtocol(
+ nginxUpstreamProxyProtocol.with(FetchVector.Dimension.ZONE_ID, zoneId.value()).value());
models.keySet().stream()
.sorted()
.forEach(tenant -> {
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index c3d9d74ed68..0a47fcf7032 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -262,6 +262,11 @@ public class Flags {
"Takes effect on redeploy",
APPLICATION_ID);
+ public static final UnboundBooleanFlag NGINX_UPSTREAM_PROXY_PROTOCOL = defineFeatureFlag(
+ "nginx-upstream-proxy-protocol", false,
+ "Whether the nginx should enable proxy-protocol for all upstreams",
+ "Takes effect immediately");
+
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, String description,
String modificationEffect, FetchVector.Dimension... dimensions) {