Skip to content
This repository was archived by the owner on Apr 10, 2024. It is now read-only.

Commit f32ad07

Browse files
committed
kubeconfig update
1 parent e68b85a commit f32ad07

File tree

5 files changed

+39
-21
lines changed

5 files changed

+39
-21
lines changed

src/main/java/com/csviri/kubeapi/APIServer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class APIServer {
1414
private final APIServerConfig config;
1515
private BinaryManager binaryManager;
1616
private CertManager certManager;
17+
private KubeConfigManager kubeConfigManager;
1718
private Process etcdProcess;
1819
private Process apiServerProcess;
1920

@@ -25,6 +26,7 @@ public APIServer(APIServerConfig config) {
2526
this.config = config;
2627
this.binaryManager = new BinaryManager(config.getJenvtestDirectory());
2728
this.certManager = new CertManager(config.getJenvtestDirectory());
29+
this.kubeConfigManager = new KubeConfigManager(certManager);
2830
}
2931

3032
public void start() {
@@ -33,6 +35,7 @@ public void start() {
3335
cleanPreviousState();
3436
startEtcd();
3537
startApiServer();
38+
kubeConfigManager.updateKubeConfig();
3639
}
3740

3841
private void prepareLogDirectory() {

src/main/java/com/csviri/kubeapi/CertManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ private void generateUserCertificates() throws IOException, InterruptedException
6666
public String getClientCertPath() {
6767
return new File(jenvtestDir, CLIENT_CERT_NAME).getAbsolutePath();
6868
}
69+
public String getClientKeyPath() {
70+
return new File(jenvtestDir, CLIENT_KEY_NAME).getAbsolutePath();
71+
}
6972

7073
public String getAPIServerKeyPath() {
7174
return new File(jenvtestDir, API_SERVER_KEY_NAME).getAbsolutePath();

src/main/java/com/csviri/kubeapi/KubeConfigManager.java

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,39 @@
33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55

6+
import java.io.IOException;
7+
68
public class KubeConfigManager {
79

810
private static final Logger log = LoggerFactory.getLogger(KubeConfigManager.class);
11+
private CertManager certManager;
912

10-
public void updateKubeConfig() {
11-
log.debug("Adding settings to kubeconfig");
12-
addUser();
13-
addCluster();
14-
addContext();
15-
setDefaultContext();
16-
}
17-
18-
public void removeFromKubeConfig() {
19-
log.debug("Removing settings from kubeconfig");
20-
}
21-
22-
private void addUser() {
23-
13+
public KubeConfigManager(CertManager certManager) {
14+
this.certManager = certManager;
2415
}
2516

26-
private void addCluster() {
27-
17+
public void updateKubeConfig() {
18+
log.debug("Updating kubeconfig");
19+
execAndWait("kubectl", "config", "set-cluster", "jenvtest", "--server=https://127.0.0.1:6443",
20+
"--certificate-authority=" + certManager.getAPIServerCertPath());
21+
execAndWait("kubectl", "config", "set-credentials", "jenvtest",
22+
"--client-certificate=" + certManager.getClientCertPath(), "--client-key=" + certManager.getClientKeyPath());
23+
execAndWait("kubectl", "config", "set-context", "jenvtest", "--cluster=jenvtest",
24+
"--namespace=default", "--user=jenvtest");
25+
execAndWait("kubectl", "config", "use-context", "jenvtest");
2826
}
2927

30-
private void addContext() {
31-
28+
// todo
29+
public void removeFromKubeConfig() {
30+
log.debug("Cleanig up kubeconfig");
3231
}
3332

34-
private void setDefaultContext() {
35-
33+
private void execAndWait(String... arguments) {
34+
try {
35+
var process = new ProcessBuilder(arguments).start();
36+
process.waitFor();
37+
} catch (InterruptedException | IOException e) {
38+
throw new KubeApiException(e);
39+
}
3640
}
37-
3841
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.csviri.kubeapi.junit;
2+
3+
public class APIServerExtension {
4+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.csviri.kubeapi.junit;
2+
3+
4+
public @interface EnableAPIServer {
5+
}

0 commit comments

Comments
 (0)