Skip to content

Commit be41c49

Browse files
Merge pull request #51 from Phoenix616/pr/label-prefix-config
Add ability to configure the prefix of the label keys
2 parents 4a8e59c + 2d00d1d commit be41c49

File tree

6 files changed

+31
-20
lines changed

6 files changed

+31
-20
lines changed

src/main/java/net/azisaba/kuvel/KuvelServiceHandler.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private void updateLoadBalancerEndpoints(LoadBalancer loadBalancer) {
127127
client
128128
.pods()
129129
.inNamespace(namespace)
130-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
130+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "true")
131131
.list()
132132
.getItems();
133133

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

163-
String initialServerStr = pod.getMetadata().getLabels()
164-
.getOrDefault(LabelKeys.INITIAL_SERVER.getKey(), "false");
163+
String initialServerStr = pod.getMetadata().getLabels().getOrDefault(
164+
LabelKeys.INITIAL_SERVER.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "false");
165165
if (Boolean.parseBoolean(initialServerStr)) {
166166
initialServerNames.add(entry.getKey());
167167
}
@@ -232,7 +232,8 @@ public void registerPod(Pod pod, String serverName) {
232232
}
233233

234234
String initialServerStr =
235-
pod.getMetadata().getLabels().getOrDefault(LabelKeys.INITIAL_SERVER.getKey(), "false");
235+
pod.getMetadata().getLabels().getOrDefault(
236+
LabelKeys.INITIAL_SERVER.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "false");
236237
if (Boolean.parseBoolean(initialServerStr)) {
237238
initialServerNames.add(serverName);
238239
}
@@ -253,7 +254,8 @@ public void registerPod(String podUid, String serverName) {
253254
client
254255
.pods()
255256
.inNamespace(namespace)
256-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
257+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(
258+
plugin.getKuvelConfig().getLabelKeyPrefix()), "true")
257259
.list()
258260
.getItems()
259261
.stream()

src/main/java/net/azisaba/kuvel/config/KuvelConfig.java

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class KuvelConfig {
2121
private boolean redisEnabled;
2222
@Nullable private RedisConnectionData redisConnectionData;
2323
@Nullable private String proxyGroupName;
24+
private String labelKeyPrefix;
2425

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

7374
proxyGroupName = env.getOrDefault("KUVEL_REDIS_GROUPNAME", conf.getString("redis.group-name", null));
75+
labelKeyPrefix = env.getOrDefault("KUVEL_LABEL_KEY_PREFIX", conf.getString("label-key-prefix", "kuvel.azisaba.net"));
7476
}
7577
}

src/main/java/net/azisaba/kuvel/discovery/impl/redis/RedisLoadBalancerDiscovery.java

+12-8
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,14 @@ public void start() {
5252

5353
Runnable runnable =
5454
() -> {
55+
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
5556
List<ReplicaSet> replicaSetList =
5657
client
5758
.apps()
5859
.replicaSets()
5960
.inNamespace(namespace)
60-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
61-
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey())
61+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
62+
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix))
6263
.list()
6364
.getItems();
6465

@@ -114,16 +115,17 @@ private void registerOrIgnore(ReplicaSet replicaSet, boolean isFetchedFromRedis)
114115
return;
115116
}
116117

118+
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
117119
String serverName =
118120
replicaSet
119121
.getMetadata()
120122
.getLabels()
121-
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(), null);
123+
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix), null);
122124
boolean initialServer =
123125
replicaSet
124126
.getMetadata()
125127
.getLabels()
126-
.getOrDefault(LabelKeys.INITIAL_SERVER.getKey(), "false")
128+
.getOrDefault(LabelKeys.INITIAL_SERVER.getKey(labelKeyPrefix), "false")
127129
.equalsIgnoreCase("true");
128130

129131
if (serverName == null) {
@@ -239,12 +241,13 @@ public void registerLoadBalancersForStartup() {
239241
registerOrIgnore(replicaSet, true);
240242
}
241243

244+
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
242245
client
243246
.apps()
244247
.replicaSets()
245248
.inNamespace(namespace)
246-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
247-
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey())
249+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
250+
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix))
248251
.list()
249252
.getItems()
250253
.stream()
@@ -270,12 +273,13 @@ public void registerLoadBalancersForStartup() {
270273
}
271274

272275
private ReplicaSet getReplicaSetFromUid(String uid) {
276+
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
273277
return client
274278
.apps()
275279
.replicaSets()
276280
.inNamespace(namespace)
277-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
278-
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey())
281+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
282+
.withLabel(LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix))
279283
.list()
280284
.getItems()
281285
.stream()

src/main/java/net/azisaba/kuvel/discovery/impl/redis/RedisServerDiscovery.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void start() {
5454
client
5555
.pods()
5656
.inNamespace(namespace)
57-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
57+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), "true")
5858
.list()
5959
.getItems();
6060

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

115+
String labelKeyPrefix = plugin.getKuvelConfig().getLabelKeyPrefix();
115116
client
116117
.pods()
117118
.inNamespace(namespace)
118-
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(), "true")
119+
.withLabel(LabelKeys.ENABLE_SERVER_DISCOVERY.getKey(labelKeyPrefix), "true")
119120
.withField("status.phase", "Running")
120121
.list()
121122
.getItems()
@@ -130,7 +131,7 @@ public HashMap<String, Pod> getServersForStartup() {
130131
pod.getMetadata()
131132
.getLabels()
132133
.getOrDefault(
133-
LabelKeys.PREFERRED_SERVER_NAME.getKey(),
134+
LabelKeys.PREFERRED_SERVER_NAME.getKey(labelKeyPrefix),
134135
pod.getMetadata().getName());
135136
String serverName =
136137
getValidServerName(
@@ -233,7 +234,7 @@ private void registerPodOrIgnore(Pod pod) {
233234
String preferServerName =
234235
pod.getMetadata()
235236
.getLabels()
236-
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(), pod.getMetadata().getName());
237+
.getOrDefault(LabelKeys.PREFERRED_SERVER_NAME.getKey(plugin.getKuvelConfig().getLabelKeyPrefix()), pod.getMetadata().getName());
237238

238239
serverName =
239240
getValidServerName(

src/main/java/net/azisaba/kuvel/util/LabelKeys.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public enum LabelKeys {
1111

1212
private final String key;
1313

14-
public String getKey() {
15-
return "kuvel.azisaba.net/" + key;
14+
public String getKey(String prefix) {
15+
return prefix + "/" + key;
1616
}
1717

1818
@Override
1919
public String toString() {
20-
return getKey();
20+
return key;
2121
}
2222
}

src/main/resources/config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# The kubernetes namespace to use for the server discovery.
22
namespace: ""
3+
# The prefix to use for the keys of the server labels.
4+
label-key-prefix: "kuvel.azisaba.net"
35
# Server name synchronization by Redis is required in load-balanced environments using multiple Velocity.
46
redis:
57
group-name: "production"

0 commit comments

Comments
 (0)