Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading