summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOla Aunronning <olaa@yahooinc.com>2023-06-07 13:39:22 +0200
committerOla Aunronning <olaa@yahooinc.com>2023-06-07 13:39:22 +0200
commitb0d0e1de1d937979cb00054223d1e0220af22f17 (patch)
treeac86bf0620714348e812ca5d72badd823978bbec
parente8e31b8f7ff1a77a47a8e9cf1bb884123ca2469a (diff)
Move DataplaneProxy construction. Include cert/key in config. enableTokenSupport determined by flag. Change port
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/DataplaneProxy.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java47
2 files changed, 28 insertions, 27 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/DataplaneProxy.java b/config-model/src/main/java/com/yahoo/vespa/model/container/DataplaneProxy.java
index a4fc7a59d5a..54915d9daef 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/DataplaneProxy.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/DataplaneProxy.java
@@ -11,10 +11,14 @@ import java.util.Optional;
public class DataplaneProxy extends AbstractService implements DataplaneProxyConfig.Producer {
private final Integer port;
+ private final String serverCertificate;
+ private final String serverKey;
- public DataplaneProxy(TreeConfigProducer<? super DataplaneProxy> parent, Integer port) {
+ public DataplaneProxy(TreeConfigProducer<? super DataplaneProxy> parent, Integer port, String serverCertificate, String serverKey) {
super(parent, "dataplane-proxy");
this.port = port;
+ this.serverCertificate = serverCertificate;
+ this.serverKey = serverKey;
setProp("clustertype", "hosts");
setProp("clustername", "admin");
}
@@ -39,6 +43,8 @@ public class DataplaneProxy extends AbstractService implements DataplaneProxyCon
@Override
public void getConfig(DataplaneProxyConfig.Builder builder) {
builder.port(port);
+ builder.serverCertificate(serverCertificate);
+ builder.serverKey(serverKey);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index 3305e596a87..181a53f9740 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -461,7 +461,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
addDefaultConnectorHostedFilterBinding(cluster);
addAdditionalHostedConnector(deployState, cluster);
addCloudDataPlaneFilter(deployState, cluster);
- addDataplaneProxy(deployState, cluster);
}
}
@@ -498,28 +497,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
- private void addDataplaneProxy(DeployState deployState, ApplicationContainerCluster cluster) {
- if (!deployState.featureFlags().enableDataplaneProxy())
- return;
-
- var tokenChain = new HttpFilterChain("cloud-data-plane-token", HttpFilterChain.Type.SYSTEM);
- tokenChain.addInnerComponent(new Filter(
- new ChainedComponentModel(
- new BundleInstantiationSpecification(
- new ComponentSpecification("com.yahoo.jdisc.http.filter.security.misc.BlockingRequestFilter"),
- null, new ComponentSpecification("jdisc-security-filters")),
- Dependencies.emptyDependencies())));
-
- cluster.getHttp().getFilterChains().add(tokenChain);
-
- cluster.getContainers().forEach(container -> {
- var hostResource = container.getHostResource();
- var dataplaneProxy = new DataplaneProxy(hostResource.getHost(), getDataplanePort(deployState));
- dataplaneProxy.setHostResource(hostResource);
- dataplaneProxy.initService(deployState);
- });
- }
-
protected void addClients(DeployState deployState, Element spec, ApplicationContainerCluster cluster) {
if (!deployState.isHosted() || !deployState.zone().system().isPublic()) return;
@@ -608,11 +585,30 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
.orElse(false);
// TODO (mortent): Implement token support in model
- boolean enableTokenSupport = false;
+ boolean enableTokenSupport = deployState.featureFlags().enableDataplaneProxy();
// Set up component to generate proxy cert if token support is enabled
if (enableTokenSupport) {
cluster.addSimpleComponent(DataplaneProxyCredentials.class);
+ var tokenChain = new HttpFilterChain("cloud-data-plane-token", HttpFilterChain.Type.SYSTEM);
+ tokenChain.addInnerComponent(new Filter(
+ new ChainedComponentModel(
+ new BundleInstantiationSpecification(
+ new ComponentSpecification("com.yahoo.jdisc.http.filter.security.misc.BlockingRequestFilter"),
+ null, new ComponentSpecification("jdisc-security-filters")),
+ Dependencies.emptyDependencies())));
+
+ cluster.getHttp().getFilterChains().add(tokenChain);
+
+ cluster.getContainers().forEach(container -> {
+ var hostResource = container.getHostResource();
+ var dataplaneProxy = new DataplaneProxy(hostResource.getHost(),
+ getDataplanePort(deployState),
+ endpointCertificateSecrets.certificate(),
+ endpointCertificateSecrets.key());
+ dataplaneProxy.setHostResource(hostResource);
+ dataplaneProxy.initService(deployState);
+ });
}
connectorFactory = authorizeClient
? HostedSslConnectorFactory.withProvidedCertificateAndTruststore(
@@ -1389,8 +1385,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
private static int getDataplanePort(DeployState deployState) {
- // TODO: Determine port
- return deployState.featureFlags().enableDataplaneProxy() ? 9999 : HOSTED_VESPA_DATAPLANE_PORT;
+ return deployState.featureFlags().enableDataplaneProxy() ? 8443 : HOSTED_VESPA_DATAPLANE_PORT;
}
}