From bd4ec613ddc951fa7718a31f293b7cf570ba5553 Mon Sep 17 00:00:00 2001 From: Jakub Cechacek Date: Thu, 7 Nov 2024 17:53:51 +0100 Subject: [PATCH] DBZ-8234 Configurable API service port --- .../operator/api/model/runtime/RuntimeApi.java | 13 +++++++++++++ .../core/dependent/ApiServiceDependent.java | 4 ++-- docs/reference.adoc | 1 + k8/debeziumservers.debezium.io-v1.yml | 4 ++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/debezium-operator-api/src/main/java/io/debezium/operator/api/model/runtime/RuntimeApi.java b/debezium-operator-api/src/main/java/io/debezium/operator/api/model/runtime/RuntimeApi.java index e53f7ec..6506c04 100644 --- a/debezium-operator-api/src/main/java/io/debezium/operator/api/model/runtime/RuntimeApi.java +++ b/debezium-operator-api/src/main/java/io/debezium/operator/api/model/runtime/RuntimeApi.java @@ -5,6 +5,7 @@ */ package io.debezium.operator.api.model.runtime; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -21,6 +22,10 @@ public class RuntimeApi implements ConfigMappable { @JsonPropertyDescription("Whether the API should be enabled for this instance of Debezium Server") private boolean enabled = false; + @JsonProperty(defaultValue = "8080") + @JsonPropertyDescription("Port number used by the k8s service exposing the API") + private int port = 8080; + public boolean isEnabled() { return enabled; } @@ -29,6 +34,14 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; } + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + @Override public ConfigMapping asConfiguration() { return ConfigMapping.empty() diff --git a/debezium-operator-core/src/main/java/io/debezium/operator/core/dependent/ApiServiceDependent.java b/debezium-operator-core/src/main/java/io/debezium/operator/core/dependent/ApiServiceDependent.java index 1d27854..4c609e9 100644 --- a/debezium-operator-core/src/main/java/io/debezium/operator/core/dependent/ApiServiceDependent.java +++ b/debezium-operator-core/src/main/java/io/debezium/operator/core/dependent/ApiServiceDependent.java @@ -22,7 +22,6 @@ public class ApiServiceDependent extends CRUDKubernetesDependentResource { public static final String CLASSIFIER = "api"; - public static final int API_PORT = DeploymentDependent.DEFAULT_HTTP_PORT; public ApiServiceDependent() { super(Service.class); @@ -31,6 +30,7 @@ public ApiServiceDependent() { @Override protected Service desired(DebeziumServer primary, Context context) { var name = primary.getMetadata().getName(); + var apiConfig = primary.getSpec().getRuntime().getApi(); var labels = CommonLabels.serverComponent(name) .withDbzClassifier(CLASSIFIER) @@ -50,7 +50,7 @@ protected Service desired(DebeziumServer primary, Context contex .withName("http") .withProtocol("TCP") .withTargetPort(new IntOrString(DeploymentDependent.DEFAULT_HTTP_PORT)) - .withPort(API_PORT) + .withPort(apiConfig.getPort()) .build()) .build()) .build(); diff --git a/docs/reference.adoc b/docs/reference.adoc index 82e09af..927e7b5 100644 --- a/docs/reference.adoc +++ b/docs/reference.adoc @@ -454,6 +454,7 @@ Used in: <> |=== | Property | Type | Default | Description | [[debezium-operator-schema-reference-runtimeapi-enabled]]<> | boolean | | Whether the API should be enabled for this instance of Debezium Server +| [[debezium-operator-schema-reference-runtimeapi-port]]<> | int | 8080 | Port number used by the k8s service exposing the API |=== [#debezium-operator-schema-reference-runtimeenvironment] diff --git a/k8/debeziumservers.debezium.io-v1.yml b/k8/debeziumservers.debezium.io-v1.yml index d149e78..4f42a4a 100644 --- a/k8/debeziumservers.debezium.io-v1.yml +++ b/k8/debeziumservers.debezium.io-v1.yml @@ -122,6 +122,10 @@ spec: description: Whether the API should be enabled for this instance of Debezium Server type: boolean + port: + description: Port number used by the k8s service exposing + the API + type: integer type: object environment: description: Additional environment variables used by this Debezium