From b4b4ac4ad3e3040fb9ab1c2fd1e30cb3efd0f4bd Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Fri, 15 May 2015 23:21:56 +0100 Subject: [PATCH] Fix cassandra example for service accounts. --- examples/cassandra/cassandra.yaml | 2 - .../cassandra/image/kubernetes-cassandra.jar | Bin 6438 -> 8219 bytes examples/cassandra/java/pom.xml | 2 +- .../k8s/cassandra/KubernetesSeedProvider.java | 60 +++++++++++++++--- 4 files changed, 51 insertions(+), 13 deletions(-) diff --git a/examples/cassandra/cassandra.yaml b/examples/cassandra/cassandra.yaml index f921db6edf..5240899cf4 100644 --- a/examples/cassandra/cassandra.yaml +++ b/examples/cassandra/cassandra.yaml @@ -26,8 +26,6 @@ spec: value: 512M - name: HEAP_NEWSIZE value: 100M - - name: KUBERNETES_API_PROTOCOL - value: http volumes: - name: data emptyDir: {} diff --git a/examples/cassandra/image/kubernetes-cassandra.jar b/examples/cassandra/image/kubernetes-cassandra.jar index e48410ac22290ec46716ba355e1d662009a6f149..93f492965b76845d9e5da5f66b37b3d0c9f940e5 100644 GIT binary patch literal 8219 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 DZjoWB diff --git a/examples/cassandra/java/pom.xml b/examples/cassandra/java/pom.xml index 4a20149b30..0df1e54675 100644 --- a/examples/cassandra/java/pom.xml +++ b/examples/cassandra/java/pom.xml @@ -2,7 +2,7 @@ 4.0.0 io.k8s.cassandra kubernetes-cassandra - 0.0.2 + 0.0.3 src diff --git a/examples/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java b/examples/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java index e479b323aa..338c7f7e08 100644 --- a/examples/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java +++ b/examples/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java @@ -1,10 +1,14 @@ package io.k8s.cassandra; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.net.InetAddress; import java.net.UnknownHostException; import java.net.URL; import java.net.URLConnection; +import java.security.cert.X509Certificate; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; @@ -13,6 +17,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.map.ObjectMapper; @@ -45,10 +56,17 @@ public class KubernetesSeedProvider implements SeedProvider { return val; } + private static String getServiceAccountToken() throws IOException { + String file = "/var/run/secrets/kubernetes.io/serviceaccount/token"; + return new String(Files.readAllBytes(Paths.get(file))); + } + private static final Logger logger = LoggerFactory.getLogger(KubernetesSeedProvider.class); private List defaultSeeds; - + private TrustManager[] trustAll; + private HostnameVerifier trustAllHosts; + public KubernetesSeedProvider(Map params) { // Taken from SimpleSeedProvider.java // These are used as a fallback, if we get nothing from k8s. @@ -65,21 +83,43 @@ public class KubernetesSeedProvider implements SeedProvider { logger.warn("Seed provider couldn't lookup host " + host); } } - } + // TODO: Load the CA cert when it is available on all platforms. + trustAll = new TrustManager[] { + new X509TrustManager() { + public void checkServerTrusted(X509Certificate[] certs, String authType) {} + public void checkClientTrusted(X509Certificate[] certs, String authType) {} + public X509Certificate[] getAcceptedIssuers() { return null; } + } + }; + trustAllHosts = new HostnameVerifier() { + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + } public List getSeeds() { List list = new ArrayList(); - String protocol = getEnvOrDefault("KUBERNETES_API_PROTOCOL", "http"); - String hostName = getEnvOrDefault("KUBERNETES_RO_SERVICE_HOST", "localhost"); - String hostPort = getEnvOrDefault("KUBERNETES_RO_SERVICE_PORT", "8080"); - - String host = protocol + "://" + hostName + ":" + hostPort; + String host = "https://kubernetes.default.cluster.local"; String serviceName = getEnvOrDefault("CASSANDRA_SERVICE", "cassandra"); String path = "/api/v1beta3/namespaces/default/endpoints/"; try { + String token = getServiceAccountToken(); + + SSLContext ctx = SSLContext.getInstance("SSL"); + ctx.init(null, trustAll, new SecureRandom()); + URL url = new URL(host + path + serviceName); + HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); + + // TODO: Remove this once the CA cert is propogated everywhere, and replace + // with loading the CA cert. + conn.setSSLSocketFactory(ctx.getSocketFactory()); + conn.setHostnameVerifier(trustAllHosts); + + conn.addRequestProperty("Authorization", "Bearer " + token); ObjectMapper mapper = new ObjectMapper(); - Endpoints endpoints = mapper.readValue(url, Endpoints.class); + Endpoints endpoints = mapper.readValue(conn.getInputStream(), Endpoints.class); if (endpoints != null) { // Here is a problem point, endpoints.subsets can be null in first node cases. if (endpoints.subsets != null && !endpoints.subsets.isEmpty()){ @@ -90,8 +130,8 @@ public class KubernetesSeedProvider implements SeedProvider { } } } - } catch (IOException ex) { - logger.warn("Request to kubernetes apiserver failed"); + } catch (IOException | NoSuchAlgorithmException | KeyManagementException ex) { + logger.warn("Request to kubernetes apiserver failed", ex); } if (list.size() == 0) { // If we got nothing, we might be the first instance, in that case