You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by sa...@apache.org on 2018/11/01 17:57:41 UTC
[pulsar] branch master updated: Changed secretsproviderconfigurator
interface to pass v1podspec (#2903)
This is an automated email from the ASF dual-hosted git repository.
sanjeevrk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new cd63c84 Changed secretsproviderconfigurator interface to pass v1podspec (#2903)
cd63c84 is described below
commit cd63c8424051ef87918429dbf750dd89ede770c3
Author: Sanjeev Kulkarni <sa...@gmail.com>
AuthorDate: Thu Nov 1 10:57:33 2018 -0700
Changed secretsproviderconfigurator interface to pass v1podspec (#2903)
---
.../pulsar/functions/runtime/KubernetesRuntime.java | 9 +++++----
.../pulsar/functions/runtime/ProcessRuntimeTest.java | 3 ++-
.../DefaultSecretsProviderConfigurator.java | 4 ++--
.../KubernetesSecretsProviderConfigurator.java | 17 ++++++++++++-----
.../SecretsProviderConfigurator.java | 4 ++--
5 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
index 152842e..bb1ae71 100644
--- a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
+++ b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
@@ -76,6 +76,7 @@ class KubernetesRuntime implements Runtime {
public static final Pattern VALID_POD_NAME_REGEX =
Pattern.compile("[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*",
Pattern.CASE_INSENSITIVE);
+ private static final String PULSARFUNCTIONS_CONTAINER_NAME = "pulsarfunction";
private final AppsV1Api appsClient;
private final CoreV1Api coreClient;
@@ -521,6 +522,9 @@ class KubernetesRuntime implements Runtime {
containers.add(getPrometheusContainer());
podSpec.containers(containers);
+ // Configure secrets
+ secretsProviderConfigurator.configureKubernetesRuntimeSecretsProvider(podSpec, PULSARFUNCTIONS_CONTAINER_NAME, instanceConfig.getFunctionDetails());
+
return podSpec;
}
@@ -540,7 +544,7 @@ class KubernetesRuntime implements Runtime {
}
private V1Container getFunctionContainer(List<String> instanceCommand, Function.Resources resource) {
- final V1Container container = new V1Container().name("pulsarfunction");
+ final V1Container container = new V1Container().name(PULSARFUNCTIONS_CONTAINER_NAME);
// set up the container images
container.setImage(pulsarDockerImageName);
@@ -556,9 +560,6 @@ class KubernetesRuntime implements Runtime {
.fieldPath("metadata.name")));
container.addEnvItem(envVarPodName);
- // Configure secrets
- secretsProviderConfigurator.configureKubernetesRuntimeSecretsProvider(container, instanceConfig.getFunctionDetails());
-
// set container resources
final V1ResourceRequirements resourceRequirements = new V1ResourceRequirements();
final Map<String, Quantity> requests = new HashMap<>();
diff --git a/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java b/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
index c2f3638..aa385fc 100644
--- a/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
+++ b/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
@@ -30,6 +30,7 @@ import java.util.List;
import java.util.Map;
import io.kubernetes.client.models.V1Container;
+import io.kubernetes.client.models.V1PodSpec;
import org.apache.pulsar.functions.instance.InstanceConfig;
import org.apache.pulsar.functions.proto.Function;
import org.apache.pulsar.functions.proto.Function.ConsumerSpec;
@@ -70,7 +71,7 @@ public class ProcessRuntimeTest {
}
@Override
- public void configureKubernetesRuntimeSecretsProvider(V1Container container, FunctionDetails functionDetails) {
+ public void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, String functionsContainerName, FunctionDetails functionDetails) {
}
@Override
diff --git a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
index 10f9d54..c9b54f5 100644
--- a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
+++ b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
@@ -19,7 +19,7 @@
package org.apache.pulsar.functions.secretsproviderconfigurator;
import com.google.gson.reflect.TypeToken;
-import io.kubernetes.client.models.V1Container;
+import io.kubernetes.client.models.V1PodSpec;
import org.apache.pulsar.functions.proto.Function;
import org.apache.pulsar.functions.secretsprovider.ClearTextSecretsProvider;
@@ -51,7 +51,7 @@ public class DefaultSecretsProviderConfigurator implements SecretsProviderConfig
}
@Override
- public void configureKubernetesRuntimeSecretsProvider(V1Container container, Function.FunctionDetails functionDetails) {
+ public void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, String functionsContainerName, Function.FunctionDetails functionDetails) {
// noop
}
diff --git a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
index 0321734..efefa51 100644
--- a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
+++ b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
@@ -20,10 +20,7 @@ package org.apache.pulsar.functions.secretsproviderconfigurator;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
-import io.kubernetes.client.models.V1Container;
-import io.kubernetes.client.models.V1EnvVar;
-import io.kubernetes.client.models.V1EnvVarSource;
-import io.kubernetes.client.models.V1SecretKeySelector;
+import io.kubernetes.client.models.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.functions.proto.Function;
import org.apache.pulsar.functions.secretsprovider.EnvironmentBasedSecretsProvider;
@@ -62,7 +59,17 @@ public class KubernetesSecretsProviderConfigurator implements SecretsProviderCon
// environment variables way. Essentially the secretName/secretPath is attached as secretRef to the environment variables
// of a pod and kubernetes magically makes the secret pointed to by this combination available as a env variable.
@Override
- public void configureKubernetesRuntimeSecretsProvider(V1Container container, Function.FunctionDetails functionDetails) {
+ public void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, String functionsContainerName, Function.FunctionDetails functionDetails) {
+ V1Container container = null;
+ for (V1Container v1Container : podSpec.getContainers()) {
+ if (v1Container.getName().equals(functionsContainerName)) {
+ container = v1Container;
+ break;
+ }
+ }
+ if (container == null) {
+ throw new RuntimeException("No FunctionContainer found");
+ }
if (!StringUtils.isEmpty(functionDetails.getSecretsMap())) {
Type type = new TypeToken<Map<String, Object>>() {
}.getType();
diff --git a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
index a1792f1..adbd716 100644
--- a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
+++ b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
@@ -18,7 +18,7 @@
*/
package org.apache.pulsar.functions.secretsproviderconfigurator;
-import io.kubernetes.client.models.V1Container;
+import io.kubernetes.client.models.V1PodSpec;
import org.apache.pulsar.functions.proto.Function;
import java.lang.reflect.Type;
@@ -51,7 +51,7 @@ public interface SecretsProviderConfigurator {
/**
* Attaches any secrets specific stuff to the k8 container for kubernetes runtime
*/
- void configureKubernetesRuntimeSecretsProvider(V1Container container, Function.FunctionDetails functionDetails);
+ void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, String functionsContainerName, Function.FunctionDetails functionDetails);
/**
* Attaches any secrets specific stuff to the ProcessBuilder for process runtime