Skip to content

Commit bced070

Browse files
committed
Add kubeconfig-file configuration parameter to kubernetes-client extension
1 parent 3c42793 commit bced070

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

extensions/kubernetes-client/runtime-internal/src/main/java/io/quarkus/kubernetes/client/runtime/internal/KubernetesClientBuildConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ public interface KubernetesClientBuildConfig {
4646
*/
4747
Optional<String> caCertData();
4848

49+
/**
50+
* Path to a kubeconfig file to use for configuring the client. When set, the file will be read and used as the base
51+
* configuration.
52+
*/
53+
Optional<String> kubeconfigFile();
54+
4955
/**
5056
* Client certificate file
5157
*/

extensions/kubernetes-client/runtime-internal/src/main/java/io/quarkus/kubernetes/client/runtime/internal/KubernetesClientUtils.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package io.quarkus.kubernetes.client.runtime.internal;
22

3+
import java.io.IOException;
4+
import java.nio.file.Files;
5+
import java.nio.file.Path;
36
import java.time.Duration;
47
import java.util.Optional;
58

@@ -20,7 +23,18 @@ private KubernetesClientUtils() {
2023
public static Config createConfig(KubernetesClientBuildConfig buildConfig) {
2124
boolean globalTrustAll = ConfigProvider.getConfig().getOptionalValue("quarkus.tls.trust-all", Boolean.class)
2225
.orElse(false);
23-
Config base = Config.autoConfigure(null);
26+
Config base;
27+
if (buildConfig.kubeconfigFile().isPresent()) {
28+
String kubeconfigPath = buildConfig.kubeconfigFile().get();
29+
try {
30+
String kubeconfig = Files.readString(Path.of(kubeconfigPath));
31+
base = Config.fromKubeconfig(kubeconfig);
32+
} catch (IOException e) {
33+
throw new RuntimeException("Failed to read kubeconfig file: " + kubeconfigPath, e);
34+
}
35+
} else {
36+
base = Config.autoConfigure(null);
37+
}
2438
boolean trustAll = buildConfig.trustCerts().isPresent() ? buildConfig.trustCerts().get() : globalTrustAll;
2539
final var configBuilder = new ConfigBuilder(base).withTrustCerts(trustAll);
2640
buildConfig.watchReconnectInterval().ifPresent(d -> configBuilder.withWatchReconnectInterval(millisAsInt(d)));

0 commit comments

Comments
 (0)