diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-03-27 12:46:37 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-03-27 12:46:37 +0100 |
commit | d772522499db381df8ee43fea95343e1500dcfef (patch) | |
tree | 0db6c0d1afae41920deb978c564d1994d0c51dbd | |
parent | e63f7068d3716ef7aa174d6ae7c9a5a5dd754ee3 (diff) |
Add feature flag to enable Nginx upstream proxy protocol
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) { |