Skip to content

Commit 6791c5f

Browse files
authored
remove k8s NAT method (#8289)
* remove k8s NAT method Signed-off-by: Sally MacFarlane <[email protected]> * changelog - update pr number in changelog Signed-off-by: Sally MacFarlane <[email protected]> --------- Signed-off-by: Sally MacFarlane <[email protected]>
1 parent 46e74d1 commit 6791c5f

17 files changed

+3
-823
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
## Unreleased
44
### Breaking Changes
5+
- k8s (KUBERNETES) Nat method is removed. Use docker or none instead. [#8289](https://github.com/hyperledger/besu/pull/8289)
56

67
### Upcoming Breaking Changes
78
- `MetricSystem::createLabelledGauge` is deprecated and will be removed in a future release, replace it with `MetricSystem::createLabelledSuppliedGauge`
8-
- k8s (KUBERNETES) Nat method is now deprecated and will be removed in a future release. Use docker or none instead.
99
- `--Xsnapsync-synchronizer-flat-db-healing-enabled` is deprecated, use `--Xbonsai-full-flat-db-enabled` instead.
1010
- `--Xbonsai-limit-trie-logs-enabled` is deprecated, use `--bonsai-limit-trie-logs-enabled` instead.
1111
- `--Xbonsai-trie-log-pruning-enabled` is deprecated, use `--bonsai-limit-trie-logs-enabled` instead.

besu/src/main/java/org/hyperledger/besu/RunnerBuilder.java

+1-17
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,6 @@
118118
import org.hyperledger.besu.nat.core.NatManager;
119119
import org.hyperledger.besu.nat.docker.DockerDetector;
120120
import org.hyperledger.besu.nat.docker.DockerNatManager;
121-
import org.hyperledger.besu.nat.kubernetes.KubernetesDetector;
122-
import org.hyperledger.besu.nat.kubernetes.KubernetesNatManager;
123121
import org.hyperledger.besu.nat.upnp.UpnpNatManager;
124122
import org.hyperledger.besu.plugin.BesuPlugin;
125123
import org.hyperledger.besu.plugin.data.EnodeURL;
@@ -170,7 +168,6 @@ public class RunnerBuilder {
170168
private String p2pListenInterface = NetworkUtility.INADDR_ANY;
171169
private int p2pListenPort;
172170
private NatMethod natMethod = NatMethod.AUTO;
173-
private String natManagerServiceName;
174171
private boolean natMethodFallbackEnabled;
175172
private EthNetworkConfig ethNetworkConfig;
176173
private EthstatsOptions ethstatsOptions;
@@ -313,17 +310,6 @@ public RunnerBuilder natMethod(final NatMethod natMethod) {
313310
return this;
314311
}
315312

316-
/**
317-
* Add Nat manager service name.
318-
*
319-
* @param natManagerServiceName the nat manager service name
320-
* @return the runner builder
321-
*/
322-
public RunnerBuilder natManagerServiceName(final String natManagerServiceName) {
323-
this.natManagerServiceName = natManagerServiceName;
324-
return this;
325-
}
326-
327313
/**
328314
* Enable Nat method fallback.
329315
*
@@ -1213,15 +1199,13 @@ private Optional<NatManager> buildNatManager(final NatMethod natMethod) {
12131199
final NatMethod detectedNatMethod =
12141200
Optional.of(natMethod)
12151201
.filter(not(isEqual(NatMethod.AUTO)))
1216-
.orElse(NatService.autoDetectNatMethod(new KubernetesDetector(), new DockerDetector()));
1202+
.orElse(NatService.autoDetectNatMethod(new DockerDetector()));
12171203
switch (detectedNatMethod) {
12181204
case UPNP:
12191205
return Optional.of(new UpnpNatManager());
12201206
case DOCKER:
12211207
return Optional.of(
12221208
new DockerNatManager(p2pAdvertisedHost, p2pListenPort, jsonRpcConfiguration.getPort()));
1223-
case KUBERNETES:
1224-
return Optional.of(new KubernetesNatManager(natManagerServiceName));
12251209
case NONE:
12261210
default:
12271211
return Optional.empty();

besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java

-18
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import static org.hyperledger.besu.cli.util.CommandLineUtils.isOptionSet;
2727
import static org.hyperledger.besu.controller.BesuController.DATABASE_PATH;
2828
import static org.hyperledger.besu.ethereum.api.jsonrpc.authentication.EngineAuthService.EPHEMERAL_JWT_FILE;
29-
import static org.hyperledger.besu.nat.kubernetes.KubernetesNatManager.DEFAULT_BESU_SERVICE_NAME_FILTER;
3029

3130
import org.hyperledger.besu.BesuInfo;
3231
import org.hyperledger.besu.Runner;
@@ -1509,22 +1508,6 @@ private void validateGraphQlOptions() {
15091508

15101509
@SuppressWarnings("ConstantConditions")
15111510
private void validateNatParams() {
1512-
if (natMethod.equals(NatMethod.KUBERNETES)) {
1513-
logger.warn("Kubernetes NAT method is deprecated. Please use Docker or UPNP");
1514-
}
1515-
if (!unstableNatOptions.getNatManagerServiceName().equals(DEFAULT_BESU_SERVICE_NAME_FILTER)) {
1516-
logger.warn(
1517-
"`--Xnat-kube-service-name` and Kubernetes NAT method are deprecated. Please use Docker or UPNP");
1518-
}
1519-
if (!(natMethod.equals(NatMethod.AUTO) || natMethod.equals(NatMethod.KUBERNETES))
1520-
&& !unstableNatOptions
1521-
.getNatManagerServiceName()
1522-
.equals(DEFAULT_BESU_SERVICE_NAME_FILTER)) {
1523-
throw new ParameterException(
1524-
this.commandLine,
1525-
"The `--Xnat-kube-service-name` parameter is only used in kubernetes mode. Either remove --Xnat-kube-service-name"
1526-
+ " or select the KUBERNETES mode (via --nat--method=KUBERNETES)");
1527-
}
15281511
if (natMethod.equals(NatMethod.AUTO) && !unstableNatOptions.getNatMethodFallbackEnabled()) {
15291512
throw new ParameterException(
15301513
this.commandLine,
@@ -2264,7 +2247,6 @@ private Runner synchronize(
22642247
.besuController(controller)
22652248
.p2pEnabled(p2pEnabled)
22662249
.natMethod(natMethod)
2267-
.natManagerServiceName(unstableNatOptions.getNatManagerServiceName())
22682250
.natMethodFallbackEnabled(unstableNatOptions.getNatMethodFallbackEnabled())
22692251
.discoveryEnabled(peerDiscoveryEnabled)
22702252
.ethNetworkConfig(ethNetworkConfig)

besu/src/main/java/org/hyperledger/besu/cli/options/NatOptions.java

-19
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,11 @@
1414
*/
1515
package org.hyperledger.besu.cli.options;
1616

17-
import static org.hyperledger.besu.nat.kubernetes.KubernetesNatManager.DEFAULT_BESU_SERVICE_NAME_FILTER;
18-
1917
import picocli.CommandLine;
2018

2119
/** The Nat Cli options. */
2220
public class NatOptions {
2321

24-
@SuppressWarnings({"FieldCanBeFinal", "FieldMayBeFinal"}) // PicoCLI requires non-final Strings.
25-
@CommandLine.Option(
26-
hidden = true,
27-
names = {"--Xnat-kube-service-name"},
28-
description =
29-
"Specify the name of the service that will be used by the nat manager in Kubernetes. (default: ${DEFAULT-VALUE})")
30-
private String natManagerServiceName = DEFAULT_BESU_SERVICE_NAME_FILTER;
31-
3222
@CommandLine.Option(
3323
hidden = true,
3424
names = {"--Xnat-method-fallback-enabled"},
@@ -49,15 +39,6 @@ public static NatOptions create() {
4939
return new NatOptions();
5040
}
5141

52-
/**
53-
* Gets nat manager service name.
54-
*
55-
* @return the nat manager service name
56-
*/
57-
public String getNatManagerServiceName() {
58-
return natManagerServiceName;
59-
}
60-
6142
/**
6243
* Whether nat method fallback is enabled.
6344
*

besu/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java

-1
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,6 @@ public void initMocks() throws Exception {
327327
when(mockRunnerBuilder.permissioningConfiguration(any())).thenReturn(mockRunnerBuilder);
328328
when(mockRunnerBuilder.p2pEnabled(anyBoolean())).thenReturn(mockRunnerBuilder);
329329
when(mockRunnerBuilder.natMethod(any())).thenReturn(mockRunnerBuilder);
330-
when(mockRunnerBuilder.natManagerServiceName(any())).thenReturn(mockRunnerBuilder);
331330
when(mockRunnerBuilder.natMethodFallbackEnabled(anyBoolean())).thenReturn(mockRunnerBuilder);
332331
when(mockRunnerBuilder.jsonRpcConfiguration(any())).thenReturn(mockRunnerBuilder);
333332
when(mockRunnerBuilder.engineJsonRpcConfiguration(any())).thenReturn(mockRunnerBuilder);

besu/src/test/java/org/hyperledger/besu/cli/NatOptionsTest.java

+1-58
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import static java.nio.charset.StandardCharsets.UTF_8;
1818
import static org.assertj.core.api.Assertions.assertThat;
19-
import static org.hyperledger.besu.nat.kubernetes.KubernetesNatManager.DEFAULT_BESU_SERVICE_NAME_FILTER;
2019
import static org.mockito.ArgumentMatchers.eq;
2120
import static org.mockito.Mockito.verify;
2221

@@ -47,16 +46,6 @@ public void natMethodPropertyDefaultIsAuto() {
4746
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
4847
}
4948

50-
@Test
51-
public void natManagerPodNamePropertyDefaultIsBesu() {
52-
parseCommand();
53-
54-
verify(mockRunnerBuilder).natManagerServiceName(eq(DEFAULT_BESU_SERVICE_NAME_FILTER));
55-
56-
assertThat(commandOutput.toString(UTF_8)).isEmpty();
57-
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
58-
}
59-
6049
@Test
6150
public void natMethodOptionIsParsedCorrectly() {
6251

@@ -75,52 +64,6 @@ public void natMethodOptionIsParsedCorrectly() {
7564
parseCommand("--nat-method", "DOCKER");
7665
verify(mockRunnerBuilder).natMethod(eq(NatMethod.DOCKER));
7766

78-
parseCommand("--nat-method", "KUBERNETES");
79-
verify(mockRunnerBuilder).natMethod(eq(NatMethod.KUBERNETES));
80-
81-
assertThat(commandOutput.toString(UTF_8)).isEmpty();
82-
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
83-
}
84-
85-
@Test
86-
public void natManagerPodNamePropertyIsCorrectlyUpdated() {
87-
final String podName = "besu-updated";
88-
parseCommand("--Xnat-kube-service-name", podName);
89-
90-
verify(mockRunnerBuilder).natManagerServiceName(eq(podName));
91-
92-
assertThat(commandOutput.toString(UTF_8)).isEmpty();
93-
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
94-
}
95-
96-
@Test
97-
public void natManagerPodNameCannotBeUsedWithNatDockerMethod() {
98-
parseCommand("--nat-method", "DOCKER", "--Xnat-kube-service-name", "besu-updated");
99-
Mockito.verifyNoInteractions(mockRunnerBuilder);
100-
assertThat(commandOutput.toString(UTF_8)).isEmpty();
101-
assertThat(commandErrorOutput.toString(UTF_8))
102-
.contains(
103-
"The `--Xnat-kube-service-name` parameter is only used in kubernetes mode. Either remove --Xnat-kube-service-name or select the KUBERNETES mode (via --nat--method=KUBERNETES)");
104-
}
105-
106-
@Test
107-
public void natManagerPodNameCannotBeUsedWithNatNoneMethod() {
108-
parseCommand("--nat-method", "NONE", "--Xnat-kube-service-name", "besu-updated");
109-
Mockito.verifyNoInteractions(mockRunnerBuilder);
110-
assertThat(commandOutput.toString(UTF_8)).isEmpty();
111-
assertThat(commandErrorOutput.toString(UTF_8))
112-
.contains(
113-
"The `--Xnat-kube-service-name` parameter is only used in kubernetes mode. Either remove --Xnat-kube-service-name or select the KUBERNETES mode (via --nat--method=KUBERNETES)");
114-
}
115-
116-
@Test
117-
public void natMethodFallbackEnabledPropertyIsCorrectlyUpdatedWithKubernetes() {
118-
119-
parseCommand("--nat-method", "KUBERNETES", "--Xnat-method-fallback-enabled", "false");
120-
verify(mockRunnerBuilder).natMethodFallbackEnabled(eq(false));
121-
parseCommand("--nat-method", "KUBERNETES", "--Xnat-method-fallback-enabled", "true");
122-
verify(mockRunnerBuilder).natMethodFallbackEnabled(eq(true));
123-
12467
assertThat(commandOutput.toString(UTF_8)).isEmpty();
12568
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
12669
}
@@ -167,6 +110,6 @@ public void parsesInvalidNatMethodOptionsShouldFail() {
167110
assertThat(commandOutput.toString(UTF_8)).isEmpty();
168111
assertThat(commandErrorOutput.toString(UTF_8))
169112
.contains(
170-
"Invalid value for option '--nat-method': expected one of [UPNP, UPNPP2PONLY, DOCKER, KUBERNETES, AUTO, NONE] (case-insensitive) but was 'invalid'");
113+
"Invalid value for option '--nat-method': expected one of [UPNP, UPNPP2PONLY, DOCKER, AUTO, NONE] (case-insensitive) but was 'invalid'");
171114
}
172115
}

besu/src/test/resources/everything_config.toml

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ security-module="localfile"
2626
identity="PegaSysEng"
2727
p2p-enabled=true
2828
nat-method="NONE"
29-
Xnat-kube-service-name="besu"
3029
Xnat-method-fallback-enabled=true
3130
discovery-enabled=false
3231
poa-discovery-retry-bootnodes=true

nat/build.gradle

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ dependencies {
3535
implementation 'com.squareup.okhttp3:okhttp'
3636
implementation 'org.jupnp:org.jupnp'
3737
implementation 'org.jupnp:org.jupnp.support'
38-
implementation 'io.kubernetes:client-java'
3938

4039
// test dependencies.
4140
testImplementation project(path: ':ethereum:core', configuration: 'testArtifacts')

nat/src/main/java/org/hyperledger/besu/nat/NatMethod.java

-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ public enum NatMethod {
2222
UPNPP2PONLY,
2323
/** Docker nat method. */
2424
DOCKER,
25-
/** Kubernetes nat method. */
26-
KUBERNETES,
2725
/** Auto nat method. */
2826
AUTO,
2927
/** None nat method. */

nat/src/main/java/org/hyperledger/besu/nat/kubernetes/KubernetesDetector.java

-48
This file was deleted.

0 commit comments

Comments
 (0)