Skip to content

Commit

Permalink
Merge pull request #51 from Phoenix616/pr/label-prefix-config
Browse files Browse the repository at this point in the history
Add ability to configure the prefix of the label keys
  • Loading branch information
acrylic-style authored Feb 8, 2025
2 parents 4a8e59c + 2d00d1d commit be41c49
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 20 deletions.
12 changes: 7 additions & 5 deletions src/main/java/net/azisaba/kuvel/KuvelServiceHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ private void updateLoadBalancerEndpoints(LoadBalancer loadBalancer) {
client
.pods()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "true")
.list()
.getItems();

Expand Down Expand Up @@ -160,8 +160,8 @@ public void setAndRunServerDiscovery(@Nullable ServerDiscovery newServerDiscover
plugin.getProxy().getServer(entry.getKey()).ifPresent(server -> plugin.getProxy().unregisterServer(server.getServerInfo()));
plugin.getProxy().registerServer(new ServerInfo(entry.getKey(), address));

String initialServerStr = pod.getMetadata().getLabels()
.getOrDefault(LabelKeys.INITIAL_SERVER.getKey(), "false");
String initialServerStr = pod.getMetadata().getLabels().getOrDefault(
LabelKeys.INITIAL_SERVER.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "false");
if (Boolean.parseBoolean(initialServerStr)) {
initialServerNames.add(entry.getKey());
}
Expand Down Expand Up @@ -232,7 +232,8 @@ public void registerPod(Pod pod, String serverName) {
}

String initialServerStr =
pod.getMetadata().getLabels().getOrDefault(LabelKeys.INITIAL_SERVER.getKey(), "false");
pod.getMetadata().getLabels().getOrDefault(
LabelKeys.INITIAL_SERVER.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "false");
if (Boolean.parseBoolean(initialServerStr)) {
initialServerNames.add(serverName);
}
Expand All @@ -253,7 +254,8 @@ public void registerPod(String podUid, String serverName) {
client
.pods()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(
plugin.getKuvelConfig().getLabelKeyPrefix()), "true")
.list()
.getItems()
.stream()
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/net/azisaba/kuvel/config/KuvelConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class KuvelConfig {
private boolean redisEnabled;
@Nullable private RedisConnectionData redisConnectionData;
@Nullable private String proxyGroupName;
private String labelKeyPrefix;

public void load() throws IOException {
File uppercaseDataFolder = new File(plugin.getDataDirectory().getParentFile(), "Kuvel");
Expand Down Expand Up @@ -71,5 +72,6 @@ public void load() throws IOException {
}

proxyGroupName = env.getOrDefault("KUVEL_REDIS_GROUPNAME", conf.getString("redis.group-name", null));
labelKeyPrefix = env.getOrDefault("KUVEL_LABEL_KEY_PREFIX", conf.getString("label-key-prefix", "kuvel.azisaba.net"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,14 @@ public void start() {

Runnable runnable =
() -> {
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
List<ReplicaSet> replicaSetList =
client
.apps()
.replicaSets()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey())
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix))
.list()
.getItems();

Expand Down Expand Up @@ -114,16 +115,17 @@ private void registerOrIgnore(ReplicaSet replicaSet, boolean isFetchedFromRedis)
return;
}

String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
String serverName =
replicaSet
.getMetadata()
.getLabels()
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(), null);
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix), null);
boolean initialServer =
replicaSet
.getMetadata()
.getLabels()
.getOrDefault(LabelKeys.INITIAL_SERVER.getKey(), "false")
.getOrDefault(LabelKeys.INITIAL_SERVER.getKey(labelKeyPrefix), "false")
.equalsIgnoreCase("true");

if (serverName == null) {
Expand Down Expand Up @@ -239,12 +241,13 @@ public void registerLoadBalancersForStartup() {
registerOrIgnore(replicaSet, true);
}

String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
client
.apps()
.replicaSets()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey())
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix))
.list()
.getItems()
.stream()
Expand All @@ -270,12 +273,13 @@ public void registerLoadBalancersForStartup() {
}

private ReplicaSet getReplicaSetFromUid(String uid) {
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
return client
.apps()
.replicaSets()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey())
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix))
.list()
.getItems()
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public void start() {
client
.pods()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "true")
.list()
.getItems();

Expand Down Expand Up @@ -112,10 +112,11 @@ public HashMap<String, Pod> getServersForStartup() {
Map<String, String> loadBalancerMap =
jedis.hgetAll(RedisKeys.LOAD_BALANCERS_PREFIX.getKey() + groupName);

String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
client
.pods()
.inNamespace(namespace)
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
.withField("status.phase", "Running")
.list()
.getItems()
Expand All @@ -130,7 +131,7 @@ public HashMap<String, Pod> getServersForStartup() {
pod.getMetadata()
.getLabels()
.getOrDefault(
LabelKeys.PREFERRED_SERVER_NAME.getKey(),
LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix),
pod.getMetadata().getName());
String serverName =
getValidServerName(
Expand Down Expand Up @@ -233,7 +234,7 @@ private void registerPodOrIgnore(Pod pod) {
String preferServerName =
pod.getMetadata()
.getLabels()
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(), pod.getMetadata().getName());
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), pod.getMetadata().getName());

serverName =
getValidServerName(
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/net/azisaba/kuvel/util/LabelKeys.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ public enum LabelKeys {

private final String key;

public String getKey() {
return "kuvel.azisaba.net/" + key;
public String getKey(String prefix) {
return prefix + "/" + key;
}

@Override
public String toString() {
return getKey();
return key;
}
}
2 changes: 2 additions & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# The kubernetes namespace to use for the server discovery.
namespace: ""
# The prefix to use for the keys of the server labels.
label-key-prefix: "kuvel.azisaba.net"
# Server name synchronization by Redis is required in load-balanced environments using multiple Velocity.
redis:
group-name: "production"
Expand Down

0 comments on commit be41c49

Please sign in to comment.